Grammalecte  Check-in [c2148721bf]

Overview
Comment:[fr] ajustements (tests)
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk | fr
Files: files | file ages | folders
SHA3-256: c2148721bfd7556f8041d889d7da7d32b8ec4a353f93e5c2af95352b163e31fc
User & Date: olr on 2021-01-16 11:51:28
Other Links: manifest | tags
Context
2021-01-19
12:31
[fr] ajustements (tests) check-in: e28328e6f5 user: olr tags: fr, trunk
2021-01-16
11:51
[fr] ajustements (tests) check-in: c2148721bf user: olr tags: fr, trunk
2021-01-15
11:49
[core][fr] suggestions pour les verbes composés check-in: f06fcf9200 user: olr tags: core, fr, trunk
Changes

Modified gc_lang/fr/rules.grx from [019b4bfc74] to [f5fd500d96].

372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
...
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
...
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
...
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
...
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
...
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
....
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
....
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
....
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
4048
4049
4050
4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
....
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161
4162
4163
4164
4165
4166
4167
4168
4169
4170
4171
4172
4173
4174
4175
4176
4177
4178
4179
4180
4181
4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265
4266
4267
4268
4269
4270
4271
4272
4273
4274
4275
4276
4277
4278
4279
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4293
4294
4295

4296
4297
4298
4299
4300
4301
4302
4303

4304
4305
4306
4307


4308
4309
4310





4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
4321
4322
4323
4324
4325
4326
4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
4338
4339
....
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
....
4374
4375
4376
4377
4378
4379
4380
4381
4382
4383
4384
4385
4386
4387
4388
4389
4390
4391
4392
4393
4394
4395
4396
4397
4398
4399
4400
4401
4402
4403
4404
4405
4406
4407
4408
4409
4410
4411
4412
4413
4414
4415
4416
4417
4418
4419
4420
4421
4422
4423
4424
4425
4426
4427
4428
4429
4430
4431
4432
4433
4434
4435
4436
4437
4438
4439
4440
4441
4442
4443
4444
4445
4446
4447
4448
4449
4450
4451
4452
4453
4454
4455
4456
4457
4458
4459
4460
4461
4462
4463
4464
4465
4466
4467
4468
4469
4470
4471
4472
4473
4474
4475
4476
4477
4478
4479
4480
4481
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492
4493
4494
4495
4496
4497
4498
4499
4500
4501
4502
4503
4504
4505
4506
4507
4508
4509
4510
4511
4512
4513
4514
4515
4516
4517
4518
4519
4520
4521
4522
4523
4524
4525
4526
4527
4528
4529
4530
4531
4532
4533
4534
4535
4536
4537
4538
4539
4540
4541
4542
4543
4544
4545
4546
4547
4548
4549
4550
4551
4552
4553
4554
4555
4556
4557
4558
4559
4560
4561
4562
4563
4564
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
4575
4576
4577

4578
4579
4580
4581

4582
4583
4584
4585
4586
4587
4588
4589
4590
4591
4592
4593
4594
4595
4596
4597
4598
4599
4600
4601
4602
4603
4604
4605
4606
4607
4608
4609
4610
4611
4612
4613
4614
4615
4616
4617
4618
4619
4620
4621
4622
4623
4624
4625
4626
4627
4628
4629
4630
4631
4632
4633
4634
4635
4636
4637
4638
4639
4640
4641
4642
4643
4644
4645
4646
4647
4648
4649
4650
4651
4652
4653
4654
4655
4656
4657
4658
4659
4660
4661
4662
4663
4664
4665
4666
4667
4668
4669
4670
4671
4672
4673
4674
4675
4676
4677
4678
4679
4680
4681
4682
4683
4684
4685
4686
4687
4688
4689
4690
4691
4692
4693
4694
4695
4696
4697
4698
4699
4700
4701
4702
4703
4704
4705
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
4718
4719
4720
4721
4722
4723
4724
4725
4726
4727
4728
4729
4730
4731
4732
4733
4734
4735
4736
4737
4738
4739
4740
4741
4742
4743
4744
4745
4746
4747
4748
4749
4750
4751
4752
4753
4754
4755
4756
4757
4758
4759
4760
4761
....
4773
4774
4775
4776
4777
4778
4779
4780
4781
4782
4783
4784
4785
4786
4787
....
4903
4904
4905
4906
4907
4908
4909
4910
4911
4912
4913
4914
4915
4916
4917
....
5263
5264
5265
5266
5267
5268
5269
5270
5271
5272
5273
5274



5275
5276

5277
5278
5279
5280

5281
5282
5283
5284
5285
5286
5287
5288
5289
5290
5291
5292
5293
5294
5295
5296
5297

5298
5299
5300
5301
5302
5303
5304
5305
5306
.....
21098
21099
21100
21101
21102
21103
21104
21105
21106
21107
21108
21109
21110
21111
21112
21113
21114
21115
.....
24199
24200
24201
24202
24203
24204
24205

24206
24207
24208
24209
24210
24211
24212
.....
24531
24532
24533
24534
24535
24536
24537
24538
24539
24540
24541
24542
24543
24544
24545
24546
24547
24548
24549
24550
24551
24552
24553
24554
24555
24556
24557
24558
24559
24560
24561
24562
24563
24564
24565
24566
24567
24568
24569
24570
24571
24572
24573
24574
24575
24576
24577
24578
24579
24580
24581
24582
24583
24584
24585
24586
24587
24588
24589
24590
24591
24592
24593
.....
24923
24924
24925
24926
24927
24928
24929
24930
24931
24932
24933
24934
24935
24936
24937
.....
25398
25399
25400
25401
25402
25403
25404
25405
25406
25407
25408
25409
25410
25411
25412
25413
25414
25415
25416
25417
25418
25419
.....
26142
26143
26144
26145
26146
26147
26148
26149
26150
26151
26152
26153
26154
26155
26156
26157
26158
26159
26160
26161
26162
26163
26164
26165
26166
26167
26168
26169
26170
26171
26172
26173
26174
26175
26176
26177
26178
26179
26180
26181
26182
26183
26184
26185
26186
26187
26188
26189
26190
26191
26192
26193
26194
26195
26196
26197
26198
26199
26200
.....
27322
27323
27324
27325
27326
27327
27328
27329
27330
27331
27332
27333
27334
27335
27336
.....
28444
28445
28446
28447
28448
28449
28450
28451
28452
28453
28454
28455
28456
28457
28458
28459
28460
28461
28462
28463
28464
28465
.....
31275
31276
31277
31278
31279
31280
31281
31282
31283
31284
31285
31286
31287
31288
31289
31290
.....
33253
33254
33255
33256
33257
33258
33259
33260
33261
33262
33263
33264
33265
33266
33267
33268
33269
33270
.....
33279
33280
33281
33282
33283
33284
33285
33286
33287
33288
33289
33290
33291
33292
33293
TEST: Espaces{{                 }}surnuméraires.                        ->> " "


# Espaces insécable et sécable, et tabulations
__<s>/esp(esp_mélangés1)__              (?:  |  ) <<- ->> " | "                                     && Incohérence : l’espace insécable à côté de l’espace sécable n’a pas d’effet.
__<s>/esp(esp_mélangés2)__              (?:\u0009[  ]|[  ]\u0009) <<- ->> " |	"                   && Incohérence : espace et tabulation.

TEST: J’espère que ça ne va pas durer trop longtemps avec Mr{{  }}Paul.
TEST: J’espère que ça{{ 	}}va pas durer. (Ici, espace suivi d’une tabulation)      ->>  " |	"


# Espaces insécables multiples
__<s>/esp(esp_insécables_multiples)__   "[  ][  ]+" <<- ->> " | "                                   && Espace·s insécable·s surnuméraire·s à supprimer.

TEST: «{{  }}Je suis partie. »                                          ->> " | "
................................................................................
TEST: L’exposant −127, code 0000 0000, est réservé pour zéro


# Espaces et crochets et parenthèses
__<s>/typo(typo_espace_après_signe_ouvrant)__    "([\[(]) "  @@0 <<- ->> \1                         && Pas d’espace après ce signe.
__<s>/typo(typo_espace_avant_signe_fermant)__    " ([\])])"  <js> ([\]\)])</js>  @@1  <<- ->> \1    && Pas d’espace avant ce signe.

TEST: c’est pas trop tôt {{( }}on a failli attendre).
TEST: blabla… {{[ }}crochets]                                               ->> [
TEST: {{( }}parenthèses)                                                    ->> (
TEST: c’est (enfin{{ )}} parti.                                             ->> )
TEST: voici des (parenthèses{{ )}}, n’est-ce pas ?                          ->> )


# Parenthèses collées
................................................................................
# Solution audacieuse
__[s>/typo(typo_apostrophe_manquante_audace1)!8__
    ([ldsncjmtç] )[aeéiouhAEÉIOUHyîèêôûYÎÈÊÔÛ<]  @@0
        <<- option("mapos") and not before("(?i)(?:lettre|caractère|glyphe|dimension|variable|fonction|point) *$")
        -1>> =\1[:-1]+"’"                                                                           && Il manque peut-être une apostrophe.
# Note : pour les majuscules, la règle se situe lors de la passe suivante.

TEST: __mapos__ {{n }}arrive pas à sa cheville
TEST: le coup {{qu }}avait donné                                                ->> qu’
TEST: pendant {{qu }}il avançait d’un pas indolent                              ->> qu’
TEST: {{jusqu }}à plus soif                                                     ->> jusqu’
TEST: il ne {{m }}avait jamais fait défaut                                      ->> m’
TEST: Il {{s }}était dit qu’il ne le ferait pas.                                ->> s’
TEST: Je {{m }}étais imaginé que je pourrais pas retrouver cet objet.           ->> m’
TEST: Je {{n }}ai pas retrouvé l’ambiance de mes années de lycée.               ->> n’
................................................................................
    [\w.?!](')(?:[   ]|$)  @@*
        <<- -1>> ”|’|›                                                                              && Guillemets typographiques fermants.

TEST: {{'}}Ça’ recommence.                                                  ->> “|‘|‹
TEST: Le {{'}}grand’ homme.                                                 ->> “|‘|‹
TEST: Le ‘grand{{'}} homme.                                                 ->> ”|’|›
TEST: Le grand ‘homme{{'}}                                                  ->> ”|’|›
TEST: dans les {{’}}beaux quartiers{{’}}
TEST: J’en ai '''marre''' (syntaxe wiki).


!!!
!!!
!!! Processeur: balises HTML, LaTeX, Markdown                                                     !!
!!!
................................................................................
    ({w_1}[éuitsnldf])[-·–—.•⋅(/]([ntlf]?e)[-·–—.•⋅)/]?s  @@0,**
        <<- not (\0.endswith(".Les") or \0.endswith(".Tes")) and morph(\1, ":[NA]|>quel/") >>>
        <<- ~>> =normalizeInclusiveWriting(\0)
        <<- option("eepi") and not \0.endswith("les") and not \0.endswith("LES") and not re.search("·[ntlfNTLF]?[eE]·[sS]$", \0) >>>
        <<- \1.endswith("s") or \1.endswith("S") ->> \1·\2·s|\1 et \1\2s|\1\2s et \1                && Écriture épicène. Utilisez les points médians ou écrivez en toutes lettres.
        <<- __else__ ->> \1·\2·s|\1s et \1\2s|\1\2s et \1s                                          && Écriture épicène. Utilisez les points médians ou écrivez en toutes lettres.

TEST: nous sommes {{déconsidéré-e-s}}.
TEST: serons-nous toujours {{perdu.e.s}}.
TEST: les illustres {{inconnu(e)s}}.
TEST: la situation des {{salarié/e/s}}.
TEST: des {{Iranien-ne-s}} sont venues                                  ->> Iranien·ne·s|Iraniens et Iraniennes|Iraniennes et Iraniens
TEST: rendez-vous avec des {{écrivain(e)s}}                             ->> écrivain·e·s|écrivains et écrivaines|écrivaines et écrivains
TEST: Avec les {{Berlinois.e.s}}                                        ->> Berlinois·e·s|Berlinois et Berlinoises|Berlinoises et Berlinois
TEST: la graphie “{{militant(e)s}}”.
TEST: ces militant·e·s {{acharné}}.
TEST: chez les {{immortel.le.s}}
TEST: Nous sommes {{tombé.es}} par hasard
TEST: Nous avons été {{révolté.es}} de cette novlangue politique
TEST: Pour survivre, nous sommes {{devenu.es}} des archéologues.
TEST: {{enthousiasmé.es}} par un tri collectif de noix
TEST: {{Quel.le.s}}                                                     ->> Quel·le·s|Quels et Quelles|Quelles et Quels
TEST: LES IMMORTEL·LE·S
TEST: les mortel·le·s
TEST: des Berlinois·e·s
TEST: les Iranien·ne·s
TEST: les chef·fe·s
TEST: nos descendant·e·s
................................................................................
__[s]/maj(majuscule_après_point)__
    ({w_2})[.] ([a-zàâéèêîôç]\w*)  @@0,$
        <<- not re.search("(?i)^(?:etc|[A-Z]|chap|cf|ex|fig|hab|litt|circ|coll|r[eé]f|étym|suppl|bibl|bibliogr|cit|op|vol|déc|nov|oct|janv|juil|avr|sept|sg|pl|pers)$", \1)
            and morph(\1, ":") and morph(\2, ":")
        -2>> =\2.capitalize()                                                                       && Après un point, une majuscule est généralement requise.

TEST: Je suis là. {{viens}}.                                              ->> Viens
TEST: Ils sont devenus idiots. {{c}}’est peine perdue.

__<s>/maj(majuscule_début_paragraphe)__
    ^ *([a-zàâéèêîôç](?:[\w-]+[’'`‘]?|[’'`‘]))  @@$
        <<- after("\\w\\w[.] +\\w+") -1>> =\1.capitalize()                                          && Majuscule en début de phrase, sauf éventuellement lors d’une énumération.

# autre possibilité: avec or (sContext != "Writer" and after("[.] *$"))
TEST: {{je}} suis disponible quand tu veux. Mais pas aujourd’hui.                                   ->> Je
................................................................................
!!
!!
# presque : élision
__typo_presque__
    presqu’  *WORD
        <<- /typo/ not morph(\2, ">[iî]le/") -1>> "presque "            && Pas d’élision autorisée sur “presque”, sauf avec “presqu’île”.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=1745

TEST: {{Presqu’}}exclusivement bâtie en pierre.
TEST: C’est une presqu’île.
TEST: Cette presqu’ile est particulièrement venteuse.


# quelque : élision
__typo_quelque__
    quelqu’  *WORD
        <<- /typo/ not value(\2, "|un|une|") -1>> "quelque "            && Pas d’élision autorisée sur “quelque”, sauf avec “quelqu’un” ou “quelqu’une”.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=1745

TEST: {{Quelqu’}}absurde que ce soit, il faut y céder.
TEST: quelqu’un vient.
TEST: elle s’en est allée avec quelqu’une…



@@@@
@@@@
................................................................................


## lettres isolées
__ocr_lettres_isolées__
    [n|m|t|s|j|l|c|ç|d]  *WORD
        <<- /ocr/ re.search("^[aâeéèêiîouyh]", \2) -1:.2>> \1’                                      && Lettre isolée. Erreur de numérisation ?

TEST: __ocr__ {{J }}arrive demain


# Note: l’option “mapos” cherche les apostrophes manquantes après les lettres l, d, n, m, t, s, j, c, ç
__ocr_lettres_isolées2!2__
    [b|c|d|e|f|g|h|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|z]
        <<- /ocr/ before("[   ]$") and not before("\\d[   ]+$") and not (\1.isupper() and value(>1, "|.|<end>|"))
        ->> _                                                                                       && Lettre isolée : erreur de numérisation ?
................................................................................


# virgules
__ocr_virgules__
    [il|le|la|l’|les|de|d’|ne|n’|me|m’|te|t’|se|s’|à|ce|cet|cette|mon|ma|ta|sa|mes|tes|ses|nos|vos|quelque|quelques|au|aux] ,
        <<- /ocr/ space(\1, 0, 0) and not \1.isupper() or value(\1, "|à|") ->> \1             && Erreur de numérisation ? Virgule superflue ?

TEST: __ocr__ Pierre entre pour {{se,}} rapprocher de L
TEST: __ocr__ je voudrais faire une question ou deux sur une maison de ce village, la… comment l’appelle-t-on ?


# A
__ocr_A__
    À
        <<- /ocr/ not value(<1, "|<start>|—|–|") ->> A                                              && Erreur de numérisation ?

TEST: __ocr__ Va jusqu’au point {{À}}


# âge / age
__ocr_âge__
    >age
        <<- /ocr/ ->> =\1.replace("a", "â").replace("A", "Â")                                       && Erreur de numérisation ?

TEST: __ocr__ l’{{age}}


# autre / antre
__ocr_autre__
    >antre
        <<- /ocr/ ->> =\1.replace("n", "u")                                                         && Erreur de numérisation ?

TEST: __ocr__ cet {{antre}} gars lui semblait bien louche.


# avec / aven / arec
__ocr_avec__
    [arec|aven]
        <<- /ocr/ ->> avec                                                                          && Erreur de numérisation ?

TEST: __ocr__ Elle s’en alla {{arec}} eux sans un regard en arrière.


# avaient / avalent
__ocr_avaient__
    avalent
        <<- /ocr/ ->> avaient                                                                       && Erreur de numérisation ?

TEST: __ocr__ Ils {{avalent}} très faim.


# avais / avals / axais
__ocr_avis__
    [avals|axais]
        <<- /ocr/ ->> avais                                                                         && Erreur de numérisation ?

TEST: __ocr__ j’{{axais}} souvent perdu le contrôle de moi-même, mais jamais à ce point


# brait / bruit
__ocr_bruit__
    brait
        <<- /ocr/ not value(<1, "|il|ne|n’|âne|ânesse|") ->> bruit                                  && Erreur de numérisation ?

TEST: __ocr__ tout ce qui {{brait}} dans la nuit


# car dans / cardans
__ocr_car_dans__
    cardans
        <<- /ocr/ ->> car dans                                                                      && Erreur de numérisation ?

TEST: __ocr__ On se tut tous, {{cardans}} l’armée on apprend à la boucler.


# cela
__ocr_cela__
    Gela
        <<- /ocr/ not value(<1, "|il|ne|elle|") ->> Cela                                            && Erreur de numérisation ?

TEST: __ocr__ {{Gela}}, on n’en veut plus.


# celui / celai
__ocr_celui__
    celai
        <<- /ocr/ not value(<1, "|je|ne|le|la|les|") ->> celui                                      && Erreur de numérisation ?

TEST: __ocr__ je suis déjà venu et {{celai}} qui viendra encore.


# ces / cos
__ocr_ces__
    cos
        <<- /ocr/ ->> ces                                                                           && Erreur de numérisation ?

TEST: __ocr__ {{cos}} problèmes sont insolubles.


# C’était / Celait
__ocr_c_était__
    celait
        <<- /ocr/ ->> c’était                                                                       && Erreur de numérisation ?

TEST: __ocr__ {{celait}} perdu d’avance.


# cette / celte / cotte
__ocr_cette__
    [celte|celle]  @:N.*:f:s
        <<- /ocr/ -1>> cette                                                                        && Erreur de numérisation ?

    cotte
        <<- /ocr/ not morph(<1, ":D.*:f:[si]") ->> cette                                            && Erreur de numérisation ?

TEST: __ocr__ mais {{celte}} femme semblait savoir ce qu’elle faisait.
TEST: __ocr__ avec {{celle}} tentative d’humour, il pensait nous faire rire.
TEST: __ocr__ on poirautait, {{cotte}} mariée n’arrivait pas à se décider.


# chère / obère
__ocr_chère__
    obère
        <<- /ocr/ not value(<1, "|j’|n’|l’|m’|t’|s’|il|on|elle|ça|cela|ceci|") ->> chère            && Erreur de numérisation ?

TEST: __ocr__ cette femme {{obère}} à notre cœur.


# Comme / Gomme
__ocr_comme__
    Gomme
        <<- /ocr/ not value(<1, "|et|ou|où|") ->> Comme                                             && Erreur de numérisation ?

TEST: __ocr__ {{Gomme}} il était sage à cette époque-là !


# Comment / Gomment
__ocr_comment__
    Gomment
        <<- /ocr/ ->> Comment                                                                       && Erreur de numérisation ?

TEST: __ocr__ {{Gomment}} s’en sortir avec tous ces retards qui s’accumulent ?


# contre / coutre / contra
__ocr_contre__
    [contra|coutre|coutra]
        <<- /ocr/ ->> contre                                                                        && Erreur de numérisation ?

TEST: __ocr__ elle était {{coutre}} cette idée et le serait toujours.


# dans / bans / clans
__ocr_dans__
    bans
        <<- /ocr/ not morph(<1, ":D.*:p") ->> dans                                                  && Erreur de numérisation ?

    [clans|dons]  [le|la|l’|les|un|une|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leur|leurs|chaque|chacun|plusieurs|quelques|maints|maintes|tout|tous|toute|toutes|certains|certaines|nombre]
        <<- /ocr/ not morph(<1, ":D.*:p") -1>> dans                                                 && Erreur de numérisation ?

    dam
        <<- /ocr/ not (value(<1, "|grand|") and value(<2, "|au|")) ->> dans                         && Erreur de numérisation ?

TEST: __ocr__ Mais {{bans}} cette ferme, tout était bien organisé.
TEST: __ocr__ sache que, {{clans}} cette ferme, on ne fait que du bio.
TEST: __ocr__ renvoyons ces chiens {{dam}} leur niche
TEST: __ocr__ nous avons vaincu, au grand dam de tous ces grands messieurs


# dame / darne
__ocr_dame__
    [>darne|>daine]
        <<- /ocr/ ->> =\1.replace("rn", "m").replace("in", "m").replace("RN", "M").replace("IN", "M")   && Erreur de numérisation ?

TEST: __ocr__ ces {{darnes}} arrivèrent avec dix minutes d’avance.
TEST: __ocr__ cette {{daine}} élégamment vêtue.


# de / dé / da / dés / des / dès / dos / das
__ocr_de_des__
    da
        <<- /ocr/ ->> de                                                                            && Erreur de numérisation ?

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

    do
        <<- /ocr/ ->> de                                                                            && Erreur de numérisation ?

    dos
        <<- /ocr/ not morph(<1, ":D.*:[me]") ->> des|dès                                            && Erreur de numérisation ?

TEST: __ocr__ Le nombre {{da}} personnes endettées augmente sans cesse.
TEST: __ocr__ le nombre {{das}} ennemis semblait croître chaque minute
TEST: __ocr__ {{dé}} gros camions circulaient toute la journée
TEST: __ocr__ {{dés}} fois, ça ne passe pas
TEST: __ocr__ {{do}} bon matin.
TEST: __ocr__ {{dos}} camions cabossés à n’en plus finir


# de la / delà
__ocr_de_la__
    delà
        <<- /ocr/ not value(<1, "|au|de|en|par|") ->> de la|de là                                   && Erreur de numérisation ?

TEST: __ocr__ la peinture {{delà}} maison s’écaillait


# doute / cloute
__ocr_doute__
    cloute
        <<- /ocr/ ->> doute                                                                         && Erreur de numérisation ?

TEST: __ocr__ Sans aucun {{cloute}}.


# du / dû
__ocr_du__
    dû  @:[NA]:[me]:[si]¬:(?:Y|Ov)
        <<- /ocr/ -1>> du                                                                           && Erreur de numérisation ?

TEST: __ocr__ prendre {{dû}} bon temps
TEST: __ocr__ il aurait dû la trouver
TEST: __ocr__ Tous eussent dû subir ce supplice raffiné.


# elle / elfe
__ocr_elle__
    elfe
        <<- /ocr/ morph(<1, ":R|<start>|>,") or isNextVerb() ->> elle                               && Erreur de numérisation ?

    elfes
        <<- /ocr/ morph(<1, ":R|<start>|>,") or isNextVerb() ->> elles                              && Erreur de numérisation ?

TEST: __ocr__ {{elfe}} viendra bientôt
TEST: __ocr__ {{Elfes}} s’ennuyaient à mourir.


# est / ost
__ocr_est__
    ost
        <<- /ocr/ ->> est                                                                           && Erreur de numérisation ?

TEST: __ocr__ Le cheval {{ost}} attaché.


# et / cl
__ocr_et__
    [cl|c1|e1|el]
        <<- /ocr/ not before("[0-9] +$") ->> et                                                     && Erreur de numérisation ?

TEST: __ocr__ elle {{cl}} lui, c’était pour la vie.
TEST: __ocr__ {{El}} il faisait froid là-haut


# état / étal
__ocr_état_étais_étaient__
    étal
        <<- /ocr/ ->> état                                                                          && Erreur de numérisation ?

    [étals|étale]
        <<- /ocr/ ->> étais|états                                                                   && Erreur de numérisation ?

    étalent
        <<- /ocr/ ->> étaient                                                                       && Erreur de numérisation ?

TEST: __ocr__ l’{{étal}} des finances ne le permet pas
TEST: __ocr__ Quels {{étals}} sont venus ?
TEST: __ocr__ Ce qu’ils {{étalent}} vraiment, nul ne le savait.


# êtes
__ocr_êtes!6__
    ôtes
        <<- /ocr/ not value(<1, "|tu|") ->> êtes|ôtez                                               && Erreur de numérisation ?

TEST: __ocr__ vous {{ôtes}} devenus fous.


# fasse
__ocr_fasse__
    >fesse
    fessent
        <<- /ocr/ ->> =\1.replace("ess", "ass").replace("ESS", "ASS")                               && Erreur de numérisation ?

TEST: __ocr__ Quoiqu’ils {{fessent}} ça donne de la merde
TEST: __ocr__ {{fesse}} que Dieu nous entende


# fille / tille
__ocr_fille__
    tille
        <<- /ocr/ ->> fille                                                                         && Erreur de numérisation ?

TEST: __ocr__ Cette {{tille}} n’en avait jamais assez.


# fol·s / foi·s
__ocr_foi__
    [fol|fols]
        <<- /ocr/ ->> =\1.replace("l", "i").replace("L", "I")                                       && Erreur de numérisation ?

TEST: __ocr__  ils sont quelques {{fols}} battus$


# faire
__ocr_faire__
    foire
        <<- /ocr/ ->> faire                                                                         && Erreur de numérisation ?

TEST: __ocr__ j’en vois une {{foire}} l’imbécile.


# fout / font
__ocr_font__
    fout
        <<- /ocr/ not value(<1, "|il|elle|on|") and not value(<2, "|il|elle|on|") ->> font          && Erreur de numérisation ?
        <<- /ocr/ __else__ and morph(>1, ":(?:Ov|Y|W)") ->> faut                                    && Erreur de numérisation ?

TEST: __ocr__ qui ne {{fout}} rien de leur journée
TEST: __ocr__ il {{fout}} entendre cette voix


# fut / rut
__ocr_fut__
    rut
        <<- /ocr/ ->> fut                                                                           && Erreur de numérisation ?

TEST: __ocr__ ce petit {{rut}} traité comme un chien


# il / n / ils / U / Us / i1 / if / 11
__ocr_il__
    [<start>|,|(]  [n|h|d]  ~^[bcçdfghjklmnpqrstvwxz]
        <<- /ocr/ morph(\3, ":(?:O[on]|3s)") -2>> il                                                && Erreur de numérisation ?

    [U|if|i1]
        <<- /ocr/ ->> Il|il                                                                         && Erreur de numérisation ?

    [Us|ifs|i1s]
        <<- /ocr/ ->> Ils|ils                                                                       && Erreur de numérisation ?

    11
        <<- /ocr/ not morph(>1, ":N", "*") ->> Il|il                                                && Erreur de numérisation ?

TEST: __ocr__ {{n}} contient trop de soufre.
TEST: __ocr__ {{U}} arrive
TEST: __ocr__ {{Us}} arrive demain.
TEST: __ocr__ {{i1s}} en savent beaucoup trop pour leur propre bien.
TEST: __ocr__ {{11}} n’en sait rien
TEST: __ocr__ elle a 11 ans.
TEST: __ocr__ 11 jours de souffrance
TEST: __ocr__ nous sommes le 11 septembre


# fa / la
__ocr_la__
    fa
        <<- /ocr/ ->> la                                                                            && Erreur de numérisation ?

TEST: __ocr__ dans {{fa}} demeure


# large / largo
__ocr_large__
    >largo
        <<- /ocr/ ->> =\1.replace("o", "e")                                                         && Erreur de numérisation ?

TEST: __ocr__ elle pense {{largo}}


# l’ / j’ / Y / I
__ocr_lj1__
    ~^Y’[aâeéèêëiîïoôuyh]
        <<- /ocr/ ->> ="l’"+\1[2:] + "|L’"+\1[2:] + "|j’"+\1[2:] + "|J’"+\1[2:]                     && Erreur de numérisation ?

    Y  ~^[aâeéèêëiîïoôuyh]
        <<- /ocr/ before("\\w") and not morph(\2, ":Y") ->> l’\2|j’\2                               && Erreur de numérisation ?

    ~^[Ii]’[aâeéèêëiîïoôuyh]
        <<- /ocr/ ->> ="l’"+\1[2:] + "|L’"+\1[2:] + "|j’"+\1[2:] + "|J’"+\1[2:]                     && Erreur de numérisation ?

    [I|i|1]  ~^[aâeéèêëiîïoôuy]
        <<- /ocr/ ->> l’\2|L’\2|j’\2|J’\2                                                           && Erreur de numérisation ?

TEST: __ocr__ {{Y’arrive}} demain.
TEST: __ocr__ et {{Y acte}}
TEST: __ocr__ {{I’arrive}} demain.
TEST: __ocr__ {{1 entente}} cordiale



# l’ / V / P
__ocr_l__
    ~^V.
        <<- /ocr/ \1.istitle() and before("\\w") and morph(\1, ":", ":M") >>>
        <<- /ocr/ spell(\1[1:]) -:>> ="v"+\1[1:] + "|l’"+\1[1:]                                     && Erreur de numérisation ?
        <<- /ocr/ __else__ -:>> ="v"+\1[1:]                                                         && Erreur de numérisation ?


    ~^P[aâeéêèiîïoôuy]
        <<- /ocr/ before("\\w") and morph(\1, ":", ":M") and spell(\1[1:])
        -:>> ="l’"+\1[1:] + "|p"+\1[1:]                                                             && Erreur de numérisation ?



TEST: __ocr__ beaucoup de {{Vélos}} à Versailles.
TEST: __ocr__ avec {{Vagile}} méthode de notre amie Virginie, tout est possible.





TEST: __ocr__ Viens demain.
TEST: __ocr__ Ce jour où Valérie eut sa licence de droit.
TEST: __ocr__ Il scrute Pierre, {{Pair}} maussade.
TEST: __ocr__ Une grosse vague arrivait et {{Peau}} remplit.
TEST: __ocr__ selon toute logique, Paris sera épargné.
TEST: __ocr__ À l’orée de la semaine de Pâques, l’incendie de la cathédrale Notre-Dame


# l’avoir / la voir
__ocr_l_avoir_la_voir__
    lavoir
        <<- /ocr/ not morph(<1, ":D.*:[me]:[si]") ->> l’avoir|la voir                               && Erreur de numérisation ?

TEST: __ocr__ il faut {{lavoir}} pour le croire.


# l’était / Tétait
__ocr_l_était__
    Tétait
        <<- /ocr/ -:>> l’était|t’était|T’était                                                      && Erreur de numérisation ?

TEST: __ocr__ perdu, cet homme {{Tétait}}


# le / les / lé / lés / lui / lai / lei / la / tu / lu
__ocr_le_la_les__
    >lé
        <<- /ocr/ ->> =\1.replace("é", "e").replace("É", "E")                                       && Erreur de numérisation ?

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

    los
        <<- /ocr/ ->> les                                                                           && Erreur de numérisation ?

    lu
        <<- /ocr/ not morph(<1, ":(?:V0|N.*:m:[si])") ->> tu|le|la                                  && Erreur de numérisation ?

TEST: __ocr__ il s’agit de {{lés}} observer.
TEST: __ocr__ {{lai}} gros sont mal vus.
TEST: __ocr__ {{lu}} as si bien réussi
TEST: __ocr__ contre {{los}} impies


# M. / Mr / M
__ocr_mr__
    M ,  /_Tit_
        <<- /ocr/ space(\1, 0, 1) -1:2>> "Mr |M. "                                                                  && Erreur de numérisation ?

    M  /_Tit_
        <<- /ocr/ -1>> "Mr |M. "                                                                    && Erreur de numérisation ?

TEST: __ocr__ {{M,}} Patrick nous a oubliés.
TEST: __ocr__ Rencontre avec {{M}} Black.


# Mais / Hais / Mats / niais
__ocr_mais__
    Hais
        <<- /ocr/ ->> Mais                                                                          && Erreur de numérisation ?

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

    maïs
        <<- /ocr/ not morph(<1, ":D:(?:m:s|e:p)") ->> mais                                          && Erreur de numérisation ?

    niais
        <<- /ocr/ not morph(<1, ">(?:homme|ce|quel|être)/") ->> mais                                && Erreur de numérisation ?

TEST: __ocr__ {{Hais}} il en sait trop.
TEST: __ocr__ c’était bien, {{mats}} quelle journée
TEST: __ocr__ c’est bien, {{niais}} trop subtil.
TEST: __ocr__ c’est parfait, {{maïs}} trop subtil.


# matin
__ocr_matin__
    [mâtin|mâtins]
        <<- /ocr/ ->> =\1.replace("â", "a").replace("Â", "A")                                       && Erreur de numérisation ?

TEST: __ocr__ ce {{mâtin}}, il y eut une tempête.


# même / même / mème / mémo / môme
__ocr_même__
    >môme
        <<- /ocr/ ->> =\1.replace("ô", "ê").replace("Ô", "Ê")                                       && Erreur de numérisation ?

    >mème
        <<- /ocr/ ->> =\1.replace("è", "ê").replace("È", "Ê")                                       && Erreur de numérisation ?

    >mémo
        <<- /ocr/ ->> =\1.replace("é", "ê").replace("É", "Ê").replace("o", "e").replace("O", "E")   && Erreur de numérisation ?

TEST: __ocr__ J’en ai assez {{môme}} si ça ne se voit pas.
TEST: __ocr__ Ces {{mèmes}} hommes qui nous ont lâchés au pire moment
TEST: __ocr__ C’est l’incessant retour du {{mémo}}.


# mes
__ocr_mes_m_as__
    mas
        <<- /ocr/ ->> mes|m’as                                                                      && Erreur de numérisation ?

    nies
        <<- /ocr/ not value(<1, "|tu|ne|n’|") ->> mes                                               && Erreur de numérisation ?

TEST: __ocr__ elle est fière de {{mas}} succès
TEST: __ocr__ Est-ce que tu vas nier {{nies}} réussites


# mon / won
__ocr_mon__
    won
        <<- /ocr/ ->> mon                                                                           && Erreur de numérisation ?

TEST: __ocr__ c’est {{won}} ami


# mot / mol / moi
__ocr_mot__
    [mol|mols]
        <<- /ocr/ ->> =\1.replace("l", "t").replace("L", "T")+"|"+\1.replace("l", "i").replace("L", "I")  && Erreur de numérisation ?

TEST: __ocr__ c’est un {{mol}} très dur.


# moyen
__ocr_moyen__
    >moyeu
        <<- /ocr/ ->> moyen|moyens                                                                  && Erreur de numérisation ?

TEST: __ocr__ quel {{moyeu}} employer ?


# ne / na / no / rie
__ocr_ne__
    [no|na|rie]
        <<- /ocr/ ->> ne                                                                            && Erreur de numérisation ?

TEST: __ocr__ {{no}} fais rien que tu pourrais regretter
TEST: __ocr__ elle avance, mais {{rie}} prend jamais de risque inconsidéré.


# nous / noue / noua
__ocr_nous__
    [noue|noua]
        <<- /ocr/ ->> nous                                                                          && Erreur de numérisation ?

    mous
        <<- /ocr/ morph(<1, "<start>|>,|:(?:R|Os|X)") ->> nous                                      && Erreur de numérisation ?

TEST: __ocr__ {{noue}} attaquer à eux signerait notre perte.
TEST: __ocr__ il finit par {{mous}} énerver avec ces histoires sans fin
TEST: __ocr__ {{mous}} croire invincibles


# par / paf / pan / pat
__ocr_par__
    [paf|pat]
        <<- /ocr/ ->> par                                                                           && Erreur de numérisation ?

    pan
        <<- /ocr/ ->> par|peu                                                                       && Erreur de numérisation ?

    pur @:[DMT]
        <<- /ocr/ -1>> par                                                                          && Erreur de numérisation ?

TEST: __ocr__ Une seule action {{paf}} jour
TEST: __ocr__ {{Pur}} la déesse !
TEST: __ocr__ attaqué {{pan}} deux fois


# par le / par la / par les / parle / parla / parles
__ocr_par_le_la_les__
    parle  @:[NA].*:[me]:[si]
        <<- /ocr/ not value(<1, "|ne|il|on|elle|je|") -1>> par le                                   && Erreur de numérisation ?

    parla  @:[NA].*:[fe]:[si]
        <<- /ocr/ not value(<1, "|ne|il|on|elle|") -1>> par la                                      && Erreur de numérisation ?

    parles  @:[NA].*:[pi]
        <<- /ocr/ not value(<1, "|ne|tu|") -1>> par les                                             && Erreur de numérisation ?

TEST: __ocr__ {{parle}} glaive et le mensonge, l’Église s’imposa.
TEST: __ocr__ {{parla}} force, on peut réussir
TEST: __ocr__ tu fus trompée {{parles}} mensonges permanents de son beau-père.


# pendant / pondant
__ocr_pendant__
    pondant
        <<- /ocr/ ->> pendant                                                                       && Erreur de numérisation ?

TEST: __ocr__ {{pondant}} qu’elle travaille, il se prélasse.


# peu / peut / peux / pou
__ocr_peu_peux_peut__
    pou
        <<- /ocr/ not morph(<1, ":D.*:m:s") ->> peu                                                 && Erreur de numérisation ?

    poux
        <<- /ocr/ not morph(<1, ":D.*:m:p") ->> peux|peut|pour                                      && Erreur de numérisation ?

TEST: __ocr__ il est {{pou}} probable qu’il y parvienne.
TEST: __ocr__ elles sont venues {{poux}} voir de leurs propres yeux.


# plus / pins
__ocr_plus__
    pins
        <<- /ocr/ ->> plus                                                                          && Erreur de numérisation ?

TEST: __ocr__ ils sont {{pins}} instruits qu’il n’y paraît.


# puis / pois
__ocr_puis__
    pois
        <<- /ocr/ not morph(<1, ":D.*:m:p") ->> puis                                                && Erreur de numérisation ?

TEST: __ocr__ elles sont venues, {{pois}} elles sont parties.


# pour / pouf
__ocr_pour__
    pouf
        <<- /ocr/ not morph(<1, ":D.*:f:s") ->> pour                                                && Erreur de numérisation ?

TEST: __ocr__ {{pouf}} elle, il était prêt à tout.


# près / prés
__ocr_près__
    prés
        <<- /ocr/ not morph(<1, ":D.*:[me]:p") ->> près                                             && Erreur de numérisation ?

TEST: __ocr__ ils sont arrivés {{prés}} de la tombe.


# que / quo
__ocr_que__
    qua
        <<- /ocr/ not value(<1, "|sine|") ->> que                                                   && Erreur de numérisation ?

    quo
        <<- /ocr/ not value(<1, "|statu|") ->> que                                                  && Erreur de numérisation ?

TEST: __ocr__ elles ne savent pas {{qua}} faire
TEST: __ocr__ {{Quo}} penser de tout ceci ?
TEST: __ocr__ pour elle, c’est une condition sine qua non.


# qu’importe
__ocr_qu_importe__
    qu’ [importé|importa]
        <<- /ocr/ -2>> importe                                                                      && Erreur de numérisation ?

TEST: __ocr__ Qu’{{importé}} le flacon, pourvu qu’on ait l’ivresse.


# reine / ruine
__ocr_reine_ruine__
    >rainer
        <<- /ocr/ value(\1, "|raine|raines|") ->> reine|reines|ruine|ruines                         && Erreur de numérisation ?

        <<- /ocr/ __else__ ->> =\1.replace("ain", "uin").replace("AIN", "UIN")                      && Erreur de numérisation ?

TEST: __ocr__ tu vas {{rainer}} notre réputation.
TEST: __ocr__ des {{raines}} mal aimées.



# qu’étant
__ocr_qu_étant__
    quêtant
        <<- /ocr/ ->> qu’étant                                                                      && Erreur de numérisation ?

TEST: __ocr__ {{Quêtant}} la fille d’une déesse, elle n’avait pas à se justifier.


# qui / gui
__ocr_qui__
    gui
        <<- /ocr/ not morph(<1, ":D.*:m:s") ->> qui                                                 && Erreur de numérisation ?

TEST: __ocr__ avec {{gui}} faire alliance ?


# s’il / sil
__ocr_s_il__
    sil
        <<- /ocr/ ->> s’il                                                                          && Erreur de numérisation ?

    sils
        <<- /ocr/ ->> s’ils                                                                         && Erreur de numérisation ?

TEST: __ocr__ {{sil}} avait su, il n’aurait rien tenté de trop audacieux.
TEST: __ocr__ {{sils}} étaient venus, on l’aurait vu.


# son / sou
__ocr_son__
    sou
        <<- /ocr/ ->> son                                                                           && Erreur de numérisation ?

TEST: __ocr__ ça vient de {{sou}} ami


# sur / sar
__ocr_sur__
    sar
        <<- /ocr/ ->> sur                                                                           && Erreur de numérisation ?

    sui
        <<- /ocr/ not value(>1, "|generis|") ->> sur                                                && Erreur de numérisation ?

TEST: __ocr__ il ne savait rien {{sar}} eux.
TEST: __ocr__ il en est {{sui}}


# tard / lard
__ocr_tard__
    lard
        <<- /ocr/ not value(<1, "|le|ce|mon|ton|son|du|un|") ->> tard                               && Erreur de numérisation ?

TEST: __ocr__ elles seront là tôt ou {{lard}}.


# tandis que / taudis
__ocr_tandis__
    taudis [que|qu’]
        <<- /ocr/ -1>> tandis                                                                       && Erreur de numérisation ?

TEST: __ocr__ mais {{taudis}} qu’elle œuvrait à leur salut, les nuages s’amoncelaient.


# l’est / Test
__ocr_l_est__
    Test
        <<- /ocr/ before("\\w") ->> l’est                                                           && Erreur de numérisation ?

TEST: __ocr__ ça {{Test}} à leurs yeux.


# tête / tète
__ocr_tête__
    tète
        <<- /ocr/ not value(<1, "|je|il|elle|on|ne|ça|") ->> =\1.replace("è", "ê").replace("È", "Ê")    && Erreur de numérisation ?

TEST: __ocr__ cette forte {{tète}} n’écoute jamais personne.


# tin / fin / un
__ocr_fin_un__
    tin
        <<- /ocr/ ->> fin|un                                                                        && Erreur de numérisation ?

TEST: __ocr__ c’était {{tin}} marchand vaniteux.


# ton / tan
__ocr_ton__
    >tan
        <<- /ocr/ ->> =\1.replace("a", "o").replace("A", "O")                                       && Erreur de numérisation ?

TEST: __ocr__ pour {{tan}} propre bien.


# toute / tonte
__ocr_toute__
    >tonte
        <<- /ocr/ ->> =\1.replace("n", "u").replace("N", "U")                                       && Erreur de numérisation ?

TEST: __ocr__ à {{tonte}} fin utile


# tu es / tues
__ocr_tu_es__
    tues
        <<- /ocr/ not morph(<1, ":(?:N.*:f:p|V0e.*:3p)|>(?:tu|ne)/") ->> tu es                      && Erreur de numérisation ?

TEST: __ocr__ dans tous les cas, {{tues}} foutue.
TEST: __ocr__ ses actions tues.


# un / vin
__ocr_un__
    vin
        <<- /ocr/ not value(<1, "|ce|de|du|un|quel|leur|le|") ->> un                                && Erreur de numérisation ?

TEST: __ocr__ {{vin}} mathématicien hors du commun.


# une / ure / vine
__ocr_une__
    ure
        <<- /ocr/ ->> une                                                                           && Erreur de numérisation ?

    vine
        <<- /ocr/ ->> une                                                                           && Erreur de numérisation ?

TEST: __ocr__ il avait {{ure}} femme élégante et silencieuse
TEST: __ocr__ c’est pour {{vine}} amie


# vêtement / vêlement
__ocr_vêtement__
    >vêlement
        <<- /ocr/ ->> =\1.replace("l", "t").replace("L", "T")                                       && Erreur de numérisation ?

TEST: __ocr__ il enfila ses {{vêlements}} en hâte.


# vite
__ocr_vite__
    vile
        <<- /ocr/ ->> vite                                                                          && Erreur de numérisation ?

TEST: __ocr__ Elle est {{vile}} débordée par l’ampleur de la tâche.


# voilà
__ocr_voilà__
    [<start>|,|(]  ?[me|te|le|la|nous|vous|les]¿  voila
        <<- /ocr/ --1>> voilà                                                                       && Erreur de numérisation ?

TEST: __ocr__ nous {{voila}}


# voit / volt
__ocr_voit__
    volt
        <<- /ocr/ ->> voit                                                                          && Erreur de numérisation ?

TEST: __ocr__ La femme {{volt}} plus loin


# vous / voua / voue
__ocr_vous__
    [voue|voua]
        <<- /ocr/ ->> vous                                                                          && Erreur de numérisation ?

TEST: __ocr__ avec {{voue}}, je n’ai pas confiance.



@@@@
@@@@
@@@@
@@@@
................................................................................
#    *WORD  *WORD
#    <<- \1 == \2
#        and not value(\2, "|nous|vous|faire|en|la|lui|donnant|œuvre|ah|oh|eh|hé|ho|ha|hou|olé|joli|Bora|couvent|dément|sapiens|très|vroum|")
#        and not (value(\1, "|est|une|") and value(<1, "|l’|d’|"))
#        and not (\2 == "mieux" and value(<1, "|qui|"))
#    ->> \1                                                                                          && Doublon.
#
#TEST: Il y a un {{doublon doublon}}.


!!
!!
!!!! Élisions & euphonie                                                                          !!
!!
!!
................................................................................
    vieux  homme
        <<- /eleu/ -1>> vieil                                   && Euphonie. Écrivez “vieil” s’il précède un nom masculin singulier commençant par une voyelle ou un h.|https://fr.wikipedia.org/wiki/Euphonie

    vieux  ~^[aâeéèêiîoôuûyœæ]
        <<- /eleu/ morph(\2, ":[NA].*:[me]:s", ":[123][sp]")
        -1>> vieil                                              && Euphonie. Écrivez “vieil” s’il précède un nom masculin singulier commençant par une voyelle ou un h.|https://fr.wikipedia.org/wiki/Euphonie

TEST: c’est un {{vieux}} imbécile.
TEST: Le {{vieux}} homme était parti.                                               ->> vieil
TEST: Diviser les jeunes et les vieux est un peu son fonds de commerce


__eleu_n_superflu__
    on n’ [a|avait|eut|aura|aurait|eût] rarement
        <<- /eleu/ -2:3>> \3                                    && Adverbe de négation erroné. Rarement signifie que ça arrive, pas que ça n’arrive pas.
................................................................................
    *NUM  -  ~^\d\d?$  -  ~^\d{2,5}$
        <<- \1.isdigit() ~>> ␣
        <<- =>> setmeta(\1, "DATE")


__date_jour_mois_année__
    31 [avril|juin|septembre|novembre]
        <<- /date/ space(\1, 1, 1) ->> 30 \2                                                  && Cette date est invalide. Il n’y a que 30 jours en \2.

    [30|31] février
        <<- /date/ space(\1, 1, 1) ->> 28 février|29 février                                  && Cette date est invalide. Il n’y a que 28 ou 29 jours en février.




    ~^\d\d?$  [janvier|février|mars|avril|mai|juin|juillet|aout|août|septembre|octobre|novembre|décembre]  ~^\d{2,5}$
        <<- /date/ not checkDate(\1, \2, \3) ->> _                                                  && Cette date est invalide.


TEST: le {{31 avril}}
TEST: le {{30 février}}
TEST: {{29 février 2011}}



__date_journée_jour_mois_année__
    ([lundi|mardi|mercredi|jeudi|vendredi|samedi|dimanche])  ?,¿  ?le¿  (~^\d\d?$) - (~^\d\d?$) - (~^\d{2,5}$)
    ([lundi|mardi|mercredi|jeudi|vendredi|samedi|dimanche])  ?,¿  ?le¿  (~^\d\d?$)  ([janvier|février|mars|avril|mai|juin|juillet|aout|août|septembre|octobre|novembre|décembre])  (~^\d{2,5}$)
        <<- /date/ not after("^ +av(?:ant|) +J(?:C|ésus-Christ)") and not checkDay(\1, \2, \3, \4)
        -1>> =getDay(\2, \3, \4)
        && Le jour de la date suivante est incorrect (selon le calendrier grégorien).|https://fr.wikipedia.org/wiki/Passage_du_calendrier_julien_au_calendrier_gr%C3%A9gorien

TEST: {{samedi}}, le 10-06-2014                                           ->> mardi
TEST: {{lundi}} le 23-07-2019
TEST: {{mardi}} 24-07-2019
TEST: {{mercredi}}, 20-07-2019
TEST: {{mercredi}} le 10 juin 2014                                        ->> mardi
TEST: {{mercredi}}, le 10 juin 2014                                       ->> mardi
TEST: {{lundi}}, 18 août 1912                                             ->> dimanche
TEST: {{jeudi}} 17 aout 1912                                              ->> samedi

TEST: lundi, 18 août 1912 avant Jésus-Christ (date imaginaire)
TEST: {{jeudi}}, 18 août 1563 : mort de La Boétie (calendrier julien)     ->> mercredi
TEST: mercredi, 18 août 1563 : mort de La Boétie (calendrier julien)


__date_nuits_soirées_matinées__
    !! dans la [matinée|nuit|soirée] de dimanche à lundi ¡¡
    !! dans la [matinée|nuit|soirée] de lundi à mardi ¡¡
    !! dans la [matinée|nuit|soirée] de mardi à mercredi ¡¡
................................................................................

    >porter un [cou|cout|coût]
        <<- /conf/ --1>> coup                   && Confusion. Le cou est la partie séparant la tête du corps. Le coût indique ce que ça coûte. Pour ce qui frappe, écrivez “coup”.

    >encaisser [les|des|ces|mes|tes|ses|nos|vos|leurs] [cous|coûts|couts]
        <<- /conf/ --1>> coups                  && Confusion. Le cou est la partie séparant la tête du corps. Le coût indique ce que ça coûte. Pour ce qui frappe, écrivez “coup”.

TEST: il a été roué de {{cou}}
TEST: Je vais tordre le {{coup}} à toutes ces idées stupides, une par une.
TEST: Implacable, elle a rendu {{cout pour cout}} sans se départir de son calme.
TEST: j’avais prévu le {{cou}}
TEST: il a pris ses jambes à son {{coup}}                                               ->> cou
TEST: elles ont pris leurs jambes à leur {{cout}}                                       ->> cou
TEST: il a pris {{ces}} jambes à son cou                                                ->> ses
TEST: il a pris {{ces}} jambes à son {{cout}}                                           ->> ses|||cou
TEST: il faut porter un {{cou}} à ces salauds                                           ->> coup
TEST: encaisser les {{cous}}                                                            ->> coups

................................................................................
            and not (value(\1, "|de|d’|") and value(<1, "|un|une|"))
        -4>> =suggPlur(\4)                                                                          && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au pluriel.

TEST: ces {{beaux}} {{institutions}}                                            ->> belles|||
TEST: nos petites {{fille}}                                                     ->> filles
TEST: de plusieurs {{grands}} {{avocates}}                                      ->> grandes|||avocats
TEST: de vos défauts {{terrible}}, je connais presque tout.                     ->> terribles

TEST: Les éléments caractéristiques liés à ses valeurs historique et architecturale
TEST: Une des pierres veinée de rouge…
TEST: Pour maintenir le potentiel de membrane qui lui permet de communiquer avec ses voisins sous forme d’influx nerveux, un neurone a besoin d’énergie.
TEST: ces religieux inflexibles envers les femmes mais compatissants envers les tyrans qui soutiennent leur religion.
TEST: le bruit de nos pas étouffé par l’épais tapis.


................................................................................
        <<- /gn/ __also__ and hasFemForm(\2)                                    -2>> =suggMasSing(\2, True)     && Accord de genre et de nombre erroné : le déterminant « \1 » est au masculin singulier.
        <<- /gn/ morph(\2, ":[NA].*:m:p", ":(?:V0|Oo|[NA].*:[me]:[si])")        -1>> quels                      && Accord de nombre erroné : « \2 » est au pluriel.
        <<- /gn/ __also__                                                       -2>> =suggSing(\2)              && Accord de nombre erroné : le déterminant « \1 » est au masculin singulier.
        <<- /gn/ morph(\2, ":[NA].*:f:[si]", ":(?:V0|Oo|[NA].*:[me]:[si])")     -1>> quelle                     && Accord de genre erroné : « \2 » est féminin.
        <<- /gn/ __also__ and hasFemForm(\2)                                    -2>> =suggMasSing(\2, True)     && Accord de genre erroné : le déterminant « \1 » est au masculin singulier.

TEST: {{Quel}} femme.                                         ->> Quelle
TEST: {{Quel}} {{partie}}
TEST: {{Quel}} {{paris}}
TEST: {{Quel}} {{parties}}
TEST: Quel emmerdeur

__gn_quels_1m__
    quels  *WORD
        <<- /gn/ morph(\2, ":[NA].*:f:s", ":(?:V0|Oo|[NA].*:[me]:[pi])")        -1>> quelle                     && Accord de genre et de nombre erroné : « \2 » est féminin et au singulier.
        <<- /gn/ __also__ and hasFemForm(\2)                                    -2>> =suggMasPlur(\2, True)     && Accord de genre et de nombre erroné : le déterminant « \1 » est au masculin pluriel.
        <<- /gn/ morph(\2, ":[NA].*:m:s", ":(?:V0|Oo|[NA].*:[me]:[pi])")        -1>> quel                       && Accord de nombre erroné : « \2 » est au singulier.
        <<- /gn/ __also__                                                       -2>> =suggPlur(\2)              && Accord de nombre erroné : le déterminant « \1 » est au masculin pluriel.
        <<- /gn/ morph(\2, ":[NA].*:f:[pi]", ":(?:V0|Oo|[NA].*:[me]:[pi])")     -1>> quelles                    && Accord de genre erroné : « \2 » est féminin.
        <<- /gn/ __also__ and hasFemForm(\2)                                    -2>> =suggMasPlur(\2, True)     && Accord de genre erroné : le déterminant « \1 » est au masculin pluriel.

TEST: {{Quels}} chanson.                                      ->> Quelle
TEST: {{Quels}} {{chant}}
TEST: {{Quels}} {{idiotes}}
TEST: {{Quels}} {{avocate}}
TEST: Quels idiots

__gn_quelle_1m__
    quelle  *WORD
        <<- /gn/ morph(\2, ":[NA].*:m:p", ":(?:V0|Oo|[NA].*:[fe]:[si])")        -1>> quels                      && Accord de genre et de nombre erroné : « \2 » est masculin et au pluriel.
        <<- /gn/ __also__ and hasFemForm(\2)                                    -2>> =suggFemSing(\2, True)     && Accord de genre et de nombre erroné : le déterminant « \1 » est au féminin singulier.
        <<- /gn/ morph(\2, ":[NA].*:f:p", ":(?:V0|Oo|[NA].*:[fe]:[si])")        -1>> quelles                    && Accord de nombre erroné : « \2 » est au pluriel.
        <<- /gn/ __also__                                                       -2>> =suggSing(\2)              && Accord de nombre erroné : le déterminant « \1 » est au féminin singulier.
        <<- /gn/ morph(\2, ":[NA].*:m:[si]", ":(?:V0|Oo|[NA].*:[fe]:[si])")     -1>> quel                       && Accord de genre erroné : « \2 » est masculin.
        <<- /gn/ __also__ and hasFemForm(\2)                                    -2>> =suggFemSing(\2, True)     && Accord de genre erroné : le déterminant « \1 » est au féminin singulier.

TEST: {{Quelle}} homme.                                       ->> Quel
TEST: {{Quelle}} {{folles}}
TEST: {{Quelle}} {{chien}}
TEST: {{Quelle}} {{chats}}
TEST: Quelle sale journée…
TEST: On pourrait également rappeler à quel point l’Église catholique fut hostile à la laïcité et la combattit violemment.

__gn_quelles_1m!8__
    quelles  *WORD
        <<- /gn/ morph(\2, ":[NA].*:m:s", ":(?:V0|Oo|[NA].*:[fe]:[pi])")        -1>> quel                       && Accord de genre et de nombre erroné. « \2 » est masculin et au singulier.
        <<- /gn/ __also__ and hasFemForm(\2)                                    -2>> =suggFemPlur(\2, True)     && Accord de genre et de nombre erroné : le déterminant « \1 » est au féminin pluriel.
        <<- /gn/ morph(\2, ":[NA].*:f:s", ":(?:V0|Oo|[NA].*:[fe]:[pi])")        -1>> quelle                     && Accord de nombre erroné : « \2 » est au singulier.
        <<- /gn/ __also__                                                       -2>> =suggPlur(\2)              && Accord de nombre erroné : le déterminant « \1 » est au féminin pluriel.
        <<- /gn/ morph(\2, ":[NA].*:m:[pi]", ":(?:V0|Oo|[NA].*:[fe]:[pi])")     -1>> quels                      && Accord de genre erroné : « \2 » est masculin.
        <<- /gn/ __also__ and hasFemForm(\2)                                    -2>> =suggFemPlur(\2, True)     && Accord de genre erroné : le déterminant « \1 » est au féminin pluriel.

TEST: {{Quelles}} hommes
TEST: {{Quelles}} {{tarés}}.
TEST: {{Quelles}} {{cinglé}}.
TEST: {{Quelles}} {{idiote}}.
TEST: Quelles grandes tours
TEST: Quelles drôles de prunes


__gn_quel_quelle_accord_être__
    [quel|quelle]  [sont|étaient|seront|serons|seraient|furent|fussent]
        <<- /gn/ not value(<1, "|tel|telle|")
................................................................................
        -2>> seuls                                                         && Si “\2” se réfère au substantif masculin “\4”, il faut le mettre au masculin.

TEST: {{seul}} cette partie peut nous aider                                                         ->> seule
TEST: {{seule}} notre ordinateur serait assez puissant pour ça                                      ->> seul
TEST: {{seuls}} vos forces suffirent                                                                ->> seules
TEST: {{seules}} nos tests réussirent à la convaincre.                                              ->> seuls
TEST: {{seules}} des hommes et des ados costauds peuvent y parvenir                                 ->> seuls
TEST: Jusqu’ici, {{seuls}} des informations industrielles ou commerciales avaient fuité
TEST: seules des jours entiers, elles n’en pouvaient plus
TEST: seule du matin au soir
TEST: seuls le jour de Noël, c’est difficile
TEST: seul la matinée du 13 à l’école, il ne pouvait être à l’autre bout de la ville


!!
................................................................................
    [<start>|,|(]  étant [donnés|donnée|données]
        <<- /gn/ -3>> donné                                                                 && “Étant donné” : considéré comme préposition, invariable.

    [<start>|,|(]  [vus|vue|vues]  [le|la|l’|les|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leur|leurs]
    [<start>|,|(]  [vus|vue|vues]  [que|qu’]
        <<- /gn/ -2>> vu                                                                    && “Vu que”. Considéré comme préposition, invariable.

TEST: {{comprises}} mes prestations sur place
TEST: {{non-comprises}} les boissons
TEST: non {{comprise}} la remise en état
TEST: {{Exceptés}} les petits, tous sont tombes malades.
TEST: {{Attendues}} qu’on n’en sait rien, impossible de tirer des conclusions définitives.
TEST: Il viendra, étant {{donnée}} son addiction…
TEST: {{Vues}} les idioties qu’on entend, normal qu’on perde la tête.
TEST: {{Passées}} les premières heures du jour…
TEST: Il faut même être indulgent pour accorder une place à cette dernière, vu qu’elle a pour condition le mensonge des instincts
TEST: Vu la dureté extrême des conditions de survie…
TEST: vu les circonstances


#### ce + sont / étaient

................................................................................
    [ceux|celles]  qui  $:Q¬:G   [le|la|l’|les|en|nous|vous|lui|leur|y]  @:(?:[123][sp]|P)
    [ceux|celles]  qui  $:Q¬:G   [nous|vous]     [le|la|l’|les|en|y]     @:(?:[123][sp]|P)
    [ceux|celles]  qui  $:Q¬:G   [le|la|l’|les]  [lui|leur|en|y]         @:(?:[123][sp]|P)
    [ceux|celles]  qui  $:Q¬:G   [lui|leur|y]    en                      @:(?:[123][sp]|P)
    [ceux|celles]  qui  $:Q¬:G   @:(?:[123][sp]|P)
        <<- /conf/ not morph(\3, ":3[sp]") -3>> =suggVerb(\3, ":3p")                                && Confusion probable entre participe passé et forme verbale conjuguée.

TEST: qu’est-ce qui {{défini}} un attentat ?
TEST: Qui {{voulu}} la paix ?
TEST: le prix sera pour celui qui {{réussi}}
TEST: celui qui {{réussi}} aura la vie éternelle
TEST: celles qui {{demandées}} viendront demain.


__conf_conj_suj_verbe_adj__
    [quand|lorsque|puisque]  [le|cet|du]                                    *WORD  ~..[éeiut]s?$  ,  $:Os
        <<- /conf/ morph(\3, ":[NA].*:[me]:[si]") and  morph(\4, ":Q.*:[me]:[si]", ":3s")
        -4>> =suggSimil(\4, ":3s")          && Confusion probable. La proposition « \1 \2 \3 \4 » ne contient apparemment aucun verbe. Si le syntagme « \2 \3 \4 » est un complément circonstanciel ou une locution adverbiale, il serait préférable de mettre une virgule avant (mise en incise).
        <<- /conf/ __also__ -1>> \1,        && Si le syntagme « \2 \3 \4 » est un complément circonstanciel ou une locution adverbiale, il serait préférable de le placer en incise.

    [quand|lorsque|puisque]  ce                                             *WORD  ~..[éeiut]s?$  ,  $:Os
        <<- /conf/ morph(\3, ":[NA].*:[me]:[si]", ">être/") and  morph(\4, ":Q.*:[me]:[si]", ":3s")
        -4>> =suggSimil(\4, ":3s")          && Confusion probable. La proposition « \1 \2 \3 \4 » ne contient apparemment aucun verbe. Si le syntagme « \2 \3 \4 » est un complément circonstanciel ou une locution adverbiale, il serait préférable de mettre une virgule avant (mise en incise).
        <<- /conf/ __also__ -1>> \1,        && Si le syntagme « \2 \3 \4 » est un complément circonstanciel ou une locution adverbiale, il serait préférable de le placer en incise.

    [quand|lorsque|puisque]  [la|cette|ma|ta|sa]                            *WORD  ~..[éeiut]e$   ,  $:Os
        <<- /conf/ morph(\3, ":[NA].*:[fe]:[si]") and  morph(\4, ":Q.*:[fe]:[si]", ":3s")
        -4>> =suggSimil(\4, ":3s")          && Confusion probable. La proposition « \1 \2 \3 \4 » ne contient apparemment aucun verbe. Si le syntagme « \2 \3 \4 » est un complément circonstanciel ou une locution adverbiale, il serait préférable de mettre une virgule avant (mise en incise).
        <<- /conf/ __also__ -1>> \1,        && Si le syntagme « \2 \3 \4 » est un complément circonstanciel ou une locution adverbiale, il serait préférable de le placer en incise.

    [quand|lorsque|puisque]  [l’|mon|ton|ton|notre|votre|leur]              *WORD  ~..[éeiut]e?$  ,  $:Os
        <<- /conf/ morph(\3, ":[NA].*:[si]") and  morph(\4, ":Q.*:[si]", ":3s")
        -4>> =suggSimil(\4, ":3s")          && Confusion probable. La proposition « \1 \2 \3 \4 » ne contient apparemment aucun verbe. Si le syntagme « \2 \3 \4 » est un complément circonstanciel ou une locution adverbiale, il serait préférable de mettre une virgule avant (mise en incise).
        <<- /conf/ __also__ -1>> \1,        && Si le syntagme « \2 \3 \4 » est un complément circonstanciel ou une locution adverbiale, il serait préférable de le placer en incise.

    [quand|lorsque|puisque]  [les|cet|mes|tes|ses|nos|vos|leurs|quelques]   *WORD  ~..[éeiut]e?s$ ,  $:Os
        <<- /conf/ morph(\3, ":[NA].*:[pi]") and  morph(\4, ":Q.*:[pi]", ":3s")
        -4>> =suggSimil(\4, ":3s")          && Confusion probable. La proposition « \1 \2 \3 \4 » ne contient apparemment aucun verbe. Si le syntagme « \2 \3 \4 » est un complément circonstanciel ou une locution adverbiale, il serait préférable de mettre une virgule avant (mise en incise).
        <<- /conf/ __also__ -1>> \1,        && Si le syntagme « \2 \3 \4 » est un complément circonstanciel ou une locution adverbiale, il serait préférable de le placer en incise.

    [quand|lorsque|puisque]  [plusieurs|certains|certaines|maints|maintes]  *WORD  ~..[éeiut]e?s$ ,  $:Os
        <<- /conf/ morph(\3, ":[NA].*:[pi]", ":3p") and  morph(\4, ":Q.*:[pi]", ":3s")
        -4>> =suggSimil(\4, ":3s")          && Confusion probable. La proposition « \1 \2 \3 \4 » ne contient apparemment aucun verbe. Si le syntagme « \2 \3 \4 » est un complément circonstanciel ou une locution adverbiale, il serait préférable de mettre une virgule avant (mise en incise).
        <<- /conf/ __also__ -1>> \1,        && Si le syntagme « \2 \3 \4 » est un complément circonstanciel ou une locution adverbiale, il serait préférable de le placer en incise.

TEST: {{quand}} le facteur {{arrivé}}, il se précipitait à la fenêtre.
TEST: {{puisque}} la fête {{finie}}, je vais partir.
TEST: {{lorsque}} l’horloge {{sonnée}}, nous nous levions à la hâte
TEST: {{quand}} les croissants {{arrivés}}, on se jetait dessus
TEST: {{lorsque}} certains idiots {{oubliés}}, on riait aux éclats
TEST: {{lorsque}} ton code {{grossi}}, il faut le factoriser
TEST: {{quand}} ce chien {{parti}}, je fus surpris
TEST: quand le jour venu, il fallut se battre, nous étions prêts.
TEST: quand ce fut fait, il lui manqua la force de répliquer.


__conf_qui_pronom_verbe__
    qui  [lui|nous|vous]  @:[NA]¬:(?:[123][sp]|P)
        <<- /conf/ hasSimil(\-1, ":(?:[123][sp]|P)") --1>> =suggSimil(\-1, ":[123][sp]")            && Confusion probable : “\-1” n’est pas une forme verbale conjuguée.
................................................................................
TEST: censée être la meilleure de son groupe


__conf_adj_de_voir_que__
    [<start>|,|(]  *WORD  de  [voir|constater]  [que|qu’]
        <<- /conf/ morph(\2, ":V1.*:Y") -2>> =suggVerbPpas(\2)                          && Confusion probable. Si vous décrivez un état de fait (et non une action), il faut un participe passé.

TEST: {{tétaniser}} de voir que leurs théories grandioses ne valent rien


!!!! Il reste                                                                                     !!

__conj_il_reste__
    ils [restent|restaient|resteraient] [des|ces|nos|vos|ses|leurs|quelques|plusieurs] @:[NA].*:[pi]
        <<- /conj/ value(\2, "|restent|") -1:2>> il reste                               && Il reste, c’est-à-dire ce qui reste, toujours au singulier. Tout comme “il pleut des cordes”.
................................................................................
TEST: Cela fait un petit temps qu’on ne s’est plus vus.
TEST: Cela s’est entre autres traduit par l’absence de grandes controverses sur la sécurité des vaccins


__ppas_pron_pluriel_se_être_ppas__
    <start>  nous            ?[ne|n’]¿  nous     >être  @q.*:Q.*:p  @:[DB]  @:[NA]  [<end>|,|)]
    <start>  vous            ?[ne|n’]¿  vous     >être  @q.*:Q.*:p  @:[DB]  @:[NA]  [<end>|,|)]
    <start>  [on|ils|elles]  ?[ne|n’]¿  [se|s’]  >être  @q.*:Q.*:p  @:[DB]  @:[NA]  [<end>|,|)]
        <<- /ppas/ not morph(\-2, ">(?:matin|soir|soirée|nuit|après-midi|jour|année|semaine|mois|seconde|minute|heure|siècle|millénaire|fois)/") --4>> =suggVerbPpas(\-4, ":m:s")
        && Usage pronominal. Si le syntagme “\-3 \-2” est le COD du participe passé “\-4”, alors ce participe passé devrait être au masculin singulier. (Il ne s’accorde avec le sujet “\2” que si l’action agit sur “\2”.)

TEST: Ils se sont {{échangés}} leurs vœux.                          ->> échangé
TEST: elles s’étaient {{données}} le mot                            ->> donné
TEST: on se serait {{donnés}} la main, si on avait su.              ->> donné
TEST: elles se seraient {{prises}} la tête
TEST: on s’est comportés comme des porcs.
TEST: nous ne nous sommes pas compris un seul moment
TEST: vous vous êtes compromis plusieurs fois
TEST: elles se sont prises en main.
TEST: elles s’étaient aimées ce matin.


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


__conf_vc_int_imp_verbe!3__
    [/_VCint_|/_VCimp_]  @:[123][sp]¬:[GNAQWMÉ]
        <<- /conf/ not value(\1, "|rendez-vous|entre-nous|entre-vous|entre-elles|") and not morphVC(\1, ":V0")
        -2>> _                                                                  && Incohérence probable. Après une forme verbale comme “\1”, il ne faut pas une forme verbale comme “\2”.

TEST: Annonce-le {{dépare}}.
TEST: prends-la {{tète}}.
TEST: Fait-il envie ?
TEST: alors rappelons-nous Marie


__conf_verbes_det_verbe_nom__
    [<start>|,|(]  ?[ne|n’]¿   ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿  @:[123][sp]¬:[NAGM]  le     @:[123][sp]¬:[NA].*:[me]:[si]
    [<start>|,|(]  ?[ne|n’]¿   [me|m’|te|t’|se|s’|nous|vous]   [le|la|l’|les|en|y]         @:[123][sp]¬:[NAGM]  le     @:[123][sp]¬:[NA].*:[me]:[si]
................................................................................
!!

__conj_que_où_comment_verbe_sans_sujet!3__
    [que|qu’|où|comment|combien|dont|quand|pourquoi|puisque|puisqu’|lorsque|lorsqu’|auquel|auxquels|auxquelles|duquel|desquels|desquelles|lequel|laquelle|lesquels|lesquelles|si]  @:[12][sp]¬:(?:G|W|3[sp]|Y|P|Q|N|A|M|VC)
        <<- /conj/ morph(\2, ":[12]s") and not value(>1, "|je|tu|") -2>> =suggVerb(\2, ":3s")                           && Conjugaison erronée. Ce verbe devrait être à la 3ᵉ personne.
        <<- /conj/ __else__ and morph(\2, ":[12]p") and not value(>1, "|nous|vous|") -2>> =suggVerb(\2, ":3p")          && Conjugaison erronée. Ce verbe devrait être à la 3ᵉ personne.

TEST: Qu’est-ce que tu crois que {{deviens}} réellement, immanquablement et subitement cet homme après une telle dérouillée ?
TEST: peu importe ce que tu crois du lieu où l’{{abandonnerais}} ce salopard…
TEST: nous savons comment {{arriverons}} ces problèmes…
TEST: nous le pensons puisque {{paraitrons}} folles ces augmentations
TEST: ces sciences, ces religions, ces philosophies ne sont que contes destinés à nous donner l’illusion de la connaissance.
TEST: Le ministre de l’Intérieur a estimé que Calais avait vécu “un degré de violence jamais connu”.
TEST: à des règles aussi absurdes que précises



!!
................................................................................
        <<- /conj/ morph(\3, ":V0e", ":3s") -3>> =suggVerb(\3, ":3s")                       && Conjugaison erronée. Accord avec “\4 \5”. Mettez “être” à la 3ᵉ personne du singulier.

    [quels|quelles]  [que|qu’]  >être  [le|la|l’|ce|cet|cette|mon|ton|son|ma|ta|sa|notre|votre|leur]  *WORD
        <<- /conj/ not ( morph(\3, ":3p") and (value(>1, "|et|") or tag(\5, "_enum_")) )
        -3>> =suggVerb(\3, ":3s")                                                           && Conjugaison erronée. Accord avec “\4 \5”. Mettez “être” à la 3ᵉ personne du singulier.
        <<- /conj/ __also__ -1>> =\1[:-1]                                                   && Accord avec “\4 \5”. Utilisez le singulier.

TEST: Quel que {{soient}} son passe-temps, il y consacre trop de temps.
TEST: {{Quels}} que {{soient}} le feu utilisé.
TEST: {{Quels}} que {{soit}} leur problème, ça n’en finit jamais.
TEST: {{Quelles}} que {{soit}} leur voiture, elle tombe constamment en panne.
TEST: Quelles que soient la vitesse et l’efficacité de cette méthode, ça me semble moins abouti que notre solution maison.
TEST: Quels que soient le carnage, l’abomination, le crime commis, nous les poursuivrons.

# pluriel







|







 







|







 







|







 







|







 







|
|
|
|



|
<
|
|
|
|
|







 







|







 







|









|







 







|







 







|








|







|







|







|







|







|







|







|







|







|







|







|




|





|
|
|







|







|







|







|













|
|
|








|
|







 







|
|
|
|
|
|







|







|







|












|
|







|







|
|













|
|
|







|








|
|







|







|







|








|
|







|








|


|


|

|
|
|
|
|










|







|




|
|

|
|

<
<

|
|

|
|
<
|
>





|
|
|
>

|
|
|
>
>

|
|
>
>
>
>
>


<
<









|







|







 







|
|
|
|





|


|

|
|







 







|
|
|
|







|













|
|
|










|
|







|







|





|

|







|
|










|
|
|













|
|
|













|
|
|







|










|
|







|







|







|







|










|
|








|





|
>


|
|
>







|







|










|
|







|










|
|







|







|





|

|







|







|







|







|







|








|










|
|







|







|







|







|







|







 







|







 







|







 







|


|

>
>
>

<
>

|
|
|
>










|
|
|




>

<







 







|
|
|
|







 







>







 







|
|
|












|
|
|












|
|
|












|
|
|
|







 







|







 







|
|
|
|
|
|
|
|







 







|
|
|
|
|





|




|




|




|




|




|


|
|
|
|
|
|
|







 







|







 







|






|







 







|
|







 







|
|
|
|







 







|







372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
...
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
...
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
...
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
...
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879

880
881
882
883
884
885
886
887
888
889
890
891
...
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
....
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
....
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
....
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
4048
4049
4050
4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
....
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161
4162
4163
4164
4165
4166
4167
4168
4169
4170
4171
4172
4173
4174
4175
4176
4177
4178
4179
4180
4181
4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265
4266
4267
4268
4269
4270
4271
4272
4273
4274
4275
4276
4277
4278
4279
4280
4281
4282
4283
4284


4285
4286
4287
4288
4289
4290

4291
4292
4293
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
4316
4317


4318
4319
4320
4321
4322
4323
4324
4325
4326
4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
4338
4339
4340
4341
4342
....
4345
4346
4347
4348
4349
4350
4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
4372
4373
4374
....
4377
4378
4379
4380
4381
4382
4383
4384
4385
4386
4387
4388
4389
4390
4391
4392
4393
4394
4395
4396
4397
4398
4399
4400
4401
4402
4403
4404
4405
4406
4407
4408
4409
4410
4411
4412
4413
4414
4415
4416
4417
4418
4419
4420
4421
4422
4423
4424
4425
4426
4427
4428
4429
4430
4431
4432
4433
4434
4435
4436
4437
4438
4439
4440
4441
4442
4443
4444
4445
4446
4447
4448
4449
4450
4451
4452
4453
4454
4455
4456
4457
4458
4459
4460
4461
4462
4463
4464
4465
4466
4467
4468
4469
4470
4471
4472
4473
4474
4475
4476
4477
4478
4479
4480
4481
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492
4493
4494
4495
4496
4497
4498
4499
4500
4501
4502
4503
4504
4505
4506
4507
4508
4509
4510
4511
4512
4513
4514
4515
4516
4517
4518
4519
4520
4521
4522
4523
4524
4525
4526
4527
4528
4529
4530
4531
4532
4533
4534
4535
4536
4537
4538
4539
4540
4541
4542
4543
4544
4545
4546
4547
4548
4549
4550
4551
4552
4553
4554
4555
4556
4557
4558
4559
4560
4561
4562
4563
4564
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
4575
4576
4577
4578
4579
4580
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
4591
4592
4593
4594
4595
4596
4597
4598
4599
4600
4601
4602
4603
4604
4605
4606
4607
4608
4609
4610
4611
4612
4613
4614
4615
4616
4617
4618
4619
4620
4621
4622
4623
4624
4625
4626
4627
4628
4629
4630
4631
4632
4633
4634
4635
4636
4637
4638
4639
4640
4641
4642
4643
4644
4645
4646
4647
4648
4649
4650
4651
4652
4653
4654
4655
4656
4657
4658
4659
4660
4661
4662
4663
4664
4665
4666
4667
4668
4669
4670
4671
4672
4673
4674
4675
4676
4677
4678
4679
4680
4681
4682
4683
4684
4685
4686
4687
4688
4689
4690
4691
4692
4693
4694
4695
4696
4697
4698
4699
4700
4701
4702
4703
4704
4705
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
4718
4719
4720
4721
4722
4723
4724
4725
4726
4727
4728
4729
4730
4731
4732
4733
4734
4735
4736
4737
4738
4739
4740
4741
4742
4743
4744
4745
4746
4747
4748
4749
4750
4751
4752
4753
4754
4755
4756
4757
4758
4759
4760
4761
4762
4763
4764
4765
4766
....
4778
4779
4780
4781
4782
4783
4784
4785
4786
4787
4788
4789
4790
4791
4792
....
4908
4909
4910
4911
4912
4913
4914
4915
4916
4917
4918
4919
4920
4921
4922
....
5268
5269
5270
5271
5272
5273
5274
5275
5276
5277
5278
5279
5280
5281
5282
5283

5284
5285
5286
5287
5288
5289
5290
5291
5292
5293
5294
5295
5296
5297
5298
5299
5300
5301
5302
5303
5304
5305
5306
5307
5308

5309
5310
5311
5312
5313
5314
5315
.....
21107
21108
21109
21110
21111
21112
21113
21114
21115
21116
21117
21118
21119
21120
21121
21122
21123
21124
.....
24208
24209
24210
24211
24212
24213
24214
24215
24216
24217
24218
24219
24220
24221
24222
.....
24541
24542
24543
24544
24545
24546
24547
24548
24549
24550
24551
24552
24553
24554
24555
24556
24557
24558
24559
24560
24561
24562
24563
24564
24565
24566
24567
24568
24569
24570
24571
24572
24573
24574
24575
24576
24577
24578
24579
24580
24581
24582
24583
24584
24585
24586
24587
24588
24589
24590
24591
24592
24593
24594
24595
24596
24597
24598
24599
24600
24601
24602
24603
.....
24933
24934
24935
24936
24937
24938
24939
24940
24941
24942
24943
24944
24945
24946
24947
.....
25408
25409
25410
25411
25412
25413
25414
25415
25416
25417
25418
25419
25420
25421
25422
25423
25424
25425
25426
25427
25428
25429
.....
26152
26153
26154
26155
26156
26157
26158
26159
26160
26161
26162
26163
26164
26165
26166
26167
26168
26169
26170
26171
26172
26173
26174
26175
26176
26177
26178
26179
26180
26181
26182
26183
26184
26185
26186
26187
26188
26189
26190
26191
26192
26193
26194
26195
26196
26197
26198
26199
26200
26201
26202
26203
26204
26205
26206
26207
26208
26209
26210
.....
27332
27333
27334
27335
27336
27337
27338
27339
27340
27341
27342
27343
27344
27345
27346
.....
28454
28455
28456
28457
28458
28459
28460
28461
28462
28463
28464
28465
28466
28467
28468
28469
28470
28471
28472
28473
28474
28475
.....
31285
31286
31287
31288
31289
31290
31291
31292
31293
31294
31295
31296
31297
31298
31299
31300
.....
33263
33264
33265
33266
33267
33268
33269
33270
33271
33272
33273
33274
33275
33276
33277
33278
33279
33280
.....
33289
33290
33291
33292
33293
33294
33295
33296
33297
33298
33299
33300
33301
33302
33303
TEST: Espaces{{                 }}surnuméraires.                        ->> " "


# Espaces insécable et sécable, et tabulations
__<s>/esp(esp_mélangés1)__              (?:  |  ) <<- ->> " | "                                     && Incohérence : l’espace insécable à côté de l’espace sécable n’a pas d’effet.
__<s>/esp(esp_mélangés2)__              (?:\u0009[  ]|[  ]\u0009) <<- ->> " |	"                   && Incohérence : espace et tabulation.

TEST: J’espère que ça ne va pas durer trop longtemps avec Mr{{  }}Paul.                 ->> " | "
TEST: J’espère que ça{{ 	}}va pas durer. (Ici, espace suivi d’une tabulation)       ->> " |	"


# Espaces insécables multiples
__<s>/esp(esp_insécables_multiples)__   "[  ][  ]+" <<- ->> " | "                                   && Espace·s insécable·s surnuméraire·s à supprimer.

TEST: «{{  }}Je suis partie. »                                          ->> " | "
................................................................................
TEST: L’exposant −127, code 0000 0000, est réservé pour zéro


# Espaces et crochets et parenthèses
__<s>/typo(typo_espace_après_signe_ouvrant)__    "([\[(]) "  @@0 <<- ->> \1                         && Pas d’espace après ce signe.
__<s>/typo(typo_espace_avant_signe_fermant)__    " ([\])])"  <js> ([\]\)])</js>  @@1  <<- ->> \1    && Pas d’espace avant ce signe.

TEST: c’est pas trop tôt {{( }}on a failli attendre).                       ->> (
TEST: blabla… {{[ }}crochets]                                               ->> [
TEST: {{( }}parenthèses)                                                    ->> (
TEST: c’est (enfin{{ )}} parti.                                             ->> )
TEST: voici des (parenthèses{{ )}}, n’est-ce pas ?                          ->> )


# Parenthèses collées
................................................................................
# Solution audacieuse
__[s>/typo(typo_apostrophe_manquante_audace1)!8__
    ([ldsncjmtç] )[aeéiouhAEÉIOUHyîèêôûYÎÈÊÔÛ<]  @@0
        <<- option("mapos") and not before("(?i)(?:lettre|caractère|glyphe|dimension|variable|fonction|point) *$")
        -1>> =\1[:-1]+"’"                                                                           && Il manque peut-être une apostrophe.
# Note : pour les majuscules, la règle se situe lors de la passe suivante.

TEST: __mapos__ {{n }}arrive pas à sa cheville                                  ->> n’
TEST: le coup {{qu }}avait donné                                                ->> qu’
TEST: pendant {{qu }}il avançait d’un pas indolent                              ->> qu’
TEST: {{jusqu }}à plus soif                                                     ->> jusqu’
TEST: il ne {{m }}avait jamais fait défaut                                      ->> m’
TEST: Il {{s }}était dit qu’il ne le ferait pas.                                ->> s’
TEST: Je {{m }}étais imaginé que je pourrais pas retrouver cet objet.           ->> m’
TEST: Je {{n }}ai pas retrouvé l’ambiance de mes années de lycée.               ->> n’
................................................................................
    [\w.?!](')(?:[   ]|$)  @@*
        <<- -1>> ”|’|›                                                                              && Guillemets typographiques fermants.

TEST: {{'}}Ça’ recommence.                                                  ->> “|‘|‹
TEST: Le {{'}}grand’ homme.                                                 ->> “|‘|‹
TEST: Le ‘grand{{'}} homme.                                                 ->> ”|’|›
TEST: Le grand ‘homme{{'}}                                                  ->> ”|’|›
TEST: dans les {{’}}beaux quartiers{{’}}                                    ->> “|‘|‹|||
TEST: J’en ai '''marre''' (syntaxe wiki).


!!!
!!!
!!! Processeur: balises HTML, LaTeX, Markdown                                                     !!
!!!
................................................................................
    ({w_1}[éuitsnldf])[-·–—.•⋅(/]([ntlf]?e)[-·–—.•⋅)/]?s  @@0,**
        <<- not (\0.endswith(".Les") or \0.endswith(".Tes")) and morph(\1, ":[NA]|>quel/") >>>
        <<- ~>> =normalizeInclusiveWriting(\0)
        <<- option("eepi") and not \0.endswith("les") and not \0.endswith("LES") and not re.search("·[ntlfNTLF]?[eE]·[sS]$", \0) >>>
        <<- \1.endswith("s") or \1.endswith("S") ->> \1·\2·s|\1 et \1\2s|\1\2s et \1                && Écriture épicène. Utilisez les points médians ou écrivez en toutes lettres.
        <<- __else__ ->> \1·\2·s|\1s et \1\2s|\1\2s et \1s                                          && Écriture épicène. Utilisez les points médians ou écrivez en toutes lettres.

TEST: nous sommes {{déconsidéré-e-s}}.                                  ->> déconsidéré·e·s|déconsidérés et déconsidérées|déconsidérées et déconsidérés
TEST: serons-nous toujours {{perdu.e.s}}.                               ->> perdu·e·s|perdus et perdues|perdues et perdus
TEST: les illustres {{inconnu(e)s}}.                                    ->> inconnu·e·s|inconnus et inconnues|inconnues et inconnus
TEST: la situation des {{salarié/e/s}}.                                 ->> salarié·e·s|salariés et salariées|salariées et salariés
TEST: des {{Iranien-ne-s}} sont venues                                  ->> Iranien·ne·s|Iraniens et Iraniennes|Iraniennes et Iraniens
TEST: rendez-vous avec des {{écrivain(e)s}}                             ->> écrivain·e·s|écrivains et écrivaines|écrivaines et écrivains
TEST: Avec les {{Berlinois.e.s}}                                        ->> Berlinois·e·s|Berlinois et Berlinoises|Berlinoises et Berlinois
TEST: la graphie “{{militant(e)s}}”.                                    ->> militant·e·s|militants et militantes|militantes et militants

TEST: chez les {{immortel.le.s}}                                        ->> immortel·le·s|immortels et immortelles|immortelles et immortels
TEST: Nous sommes {{tombé.es}} par hasard                               ->> tombé·e·s|tombés et tombées|tombées et tombés
TEST: Nous avons été {{révolté.es}} de cette novlangue politique        ->> révolté·e·s|révoltés et révoltées|révoltées et révoltés
TEST: Pour survivre, nous sommes {{devenu.es}} des archéologues.        ->> devenu·e·s|devenus et devenues|devenues et devenus
TEST: {{enthousiasmé.es}} par un tri collectif de noix                  ->> enthousiasmé·e·s|enthousiasmés et enthousiasmées|enthousiasmées et enthousiasmés
TEST: {{Quel.le.s}}                                                     ->> Quel·le·s|Quels et Quelles|Quelles et Quels
TEST: LES IMMORTEL·LE·S
TEST: les mortel·le·s
TEST: des Berlinois·e·s
TEST: les Iranien·ne·s
TEST: les chef·fe·s
TEST: nos descendant·e·s
................................................................................
__[s]/maj(majuscule_après_point)__
    ({w_2})[.] ([a-zàâéèêîôç]\w*)  @@0,$
        <<- not re.search("(?i)^(?:etc|[A-Z]|chap|cf|ex|fig|hab|litt|circ|coll|r[eé]f|étym|suppl|bibl|bibliogr|cit|op|vol|déc|nov|oct|janv|juil|avr|sept|sg|pl|pers)$", \1)
            and morph(\1, ":") and morph(\2, ":")
        -2>> =\2.capitalize()                                                                       && Après un point, une majuscule est généralement requise.

TEST: Je suis là. {{viens}}.                                            ->> Viens
TEST: Ils sont devenus idiots. {{c}}’est peine perdue.                  ->> C

__<s>/maj(majuscule_début_paragraphe)__
    ^ *([a-zàâéèêîôç](?:[\w-]+[’'`‘]?|[’'`‘]))  @@$
        <<- after("\\w\\w[.] +\\w+") -1>> =\1.capitalize()                                          && Majuscule en début de phrase, sauf éventuellement lors d’une énumération.

# autre possibilité: avec or (sContext != "Writer" and after("[.] *$"))
TEST: {{je}} suis disponible quand tu veux. Mais pas aujourd’hui.                                   ->> Je
................................................................................
!!
!!
# presque : élision
__typo_presque__
    presqu’  *WORD
        <<- /typo/ not morph(\2, ">[iî]le/") -1>> "presque "            && Pas d’élision autorisée sur “presque”, sauf avec “presqu’île”.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=1745

TEST: {{Presqu’}}exclusivement bâtie en pierre.                 ->> "Presque "
TEST: C’est une presqu’île.
TEST: Cette presqu’ile est particulièrement venteuse.


# quelque : élision
__typo_quelque__
    quelqu’  *WORD
        <<- /typo/ not value(\2, "|un|une|") -1>> "quelque "            && Pas d’élision autorisée sur “quelque”, sauf avec “quelqu’un” ou “quelqu’une”.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=1745

TEST: {{Quelqu’}}absurde que ce soit, il faut y céder.          ->> "Quelque "
TEST: quelqu’un vient.
TEST: elle s’en est allée avec quelqu’une…



@@@@
@@@@
................................................................................


## lettres isolées
__ocr_lettres_isolées__
    [n|m|t|s|j|l|c|ç|d]  *WORD
        <<- /ocr/ re.search("^[aâeéèêiîouyh]", \2) -1:.2>> \1’                                      && Lettre isolée. Erreur de numérisation ?

TEST: __ocr__ {{J }}arrive demain                                               ->> J’


# Note: l’option “mapos” cherche les apostrophes manquantes après les lettres l, d, n, m, t, s, j, c, ç
__ocr_lettres_isolées2!2__
    [b|c|d|e|f|g|h|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|z]
        <<- /ocr/ before("[   ]$") and not before("\\d[   ]+$") and not (\1.isupper() and value(>1, "|.|<end>|"))
        ->> _                                                                                       && Lettre isolée : erreur de numérisation ?
................................................................................


# virgules
__ocr_virgules__
    [il|le|la|l’|les|de|d’|ne|n’|me|m’|te|t’|se|s’|à|ce|cet|cette|mon|ma|ta|sa|mes|tes|ses|nos|vos|quelque|quelques|au|aux] ,
        <<- /ocr/ space(\1, 0, 0) and not \1.isupper() or value(\1, "|à|") ->> \1             && Erreur de numérisation ? Virgule superflue ?

TEST: __ocr__ Pierre entre pour {{se,}} rapprocher de L                         ->> se
TEST: __ocr__ je voudrais faire une question ou deux sur une maison de ce village, la… comment l’appelle-t-on ?


# A
__ocr_A__
    À
        <<- /ocr/ not value(<1, "|<start>|—|–|") ->> A                                              && Erreur de numérisation ?

TEST: __ocr__ Va jusqu’au point {{À}}                                           ->> A


# âge / age
__ocr_âge__
    >age
        <<- /ocr/ ->> =\1.replace("a", "â").replace("A", "Â")                                       && Erreur de numérisation ?

TEST: __ocr__ l’{{age}}                                                         ->> âge


# autre / antre
__ocr_autre__
    >antre
        <<- /ocr/ ->> =\1.replace("n", "u")                                                         && Erreur de numérisation ?

TEST: __ocr__ cet {{antre}} gars lui semblait bien louche.                      ->> autre


# avec / aven / arec
__ocr_avec__
    [arec|aven]
        <<- /ocr/ ->> avec                                                                          && Erreur de numérisation ?

TEST: __ocr__ Elle s’en alla {{arec}} eux sans un regard en arrière.            ->> avec


# avaient / avalent
__ocr_avaient__
    avalent
        <<- /ocr/ ->> avaient                                                                       && Erreur de numérisation ?

TEST: __ocr__ Ils {{avalent}} très faim.                                        ->> avaient


# avais / avals / axais
__ocr_avis__
    [avals|axais]
        <<- /ocr/ ->> avais                                                                         && Erreur de numérisation ?

TEST: __ocr__ j’{{axais}} souvent perdu le contrôle de moi-même, mais jamais à ce point     ->> avais


# brait / bruit
__ocr_bruit__
    brait
        <<- /ocr/ not value(<1, "|il|ne|n’|âne|ânesse|") ->> bruit                                  && Erreur de numérisation ?

TEST: __ocr__ tout ce qui {{brait}} dans la nuit                                ->> bruit


# car dans / cardans
__ocr_car_dans__
    cardans
        <<- /ocr/ ->> car dans                                                                      && Erreur de numérisation ?

TEST: __ocr__ On se tut tous, {{cardans}} l’armée on apprend à la boucler.      ->> car dans


# cela
__ocr_cela__
    Gela
        <<- /ocr/ not value(<1, "|il|ne|elle|") ->> Cela                                            && Erreur de numérisation ?

TEST: __ocr__ {{Gela}}, on n’en veut plus.                                      ->> Cela


# celui / celai
__ocr_celui__
    celai
        <<- /ocr/ not value(<1, "|je|ne|le|la|les|") ->> celui                                      && Erreur de numérisation ?

TEST: __ocr__ je suis déjà venu et {{celai}} qui viendra encore.                ->> celui


# ces / cos
__ocr_ces__
    cos
        <<- /ocr/ ->> ces                                                                           && Erreur de numérisation ?

TEST: __ocr__ {{cos}} problèmes sont insolubles.                                ->> ces


# C’était / Celait
__ocr_c_était__
    celait
        <<- /ocr/ ->> c’était                                                                       && Erreur de numérisation ?

TEST: __ocr__ {{celait}} perdu d’avance.                                        ->> c’était


# cette / celte / cotte
__ocr_cette__
    [celte|celle]  @:[NA].*:f:s
        <<- /ocr/ -1>> cette                                                                        && Erreur de numérisation ?

    cotte
        <<- /ocr/ not morph(<1, ":D.*:f:[si]") ->> cette                                            && Erreur de numérisation ?

TEST: __ocr__ mais {{celte}} femme semblait savoir ce qu’elle faisait.          ->> cette
TEST: __ocr__ avec {{celle}} tentative d’humour, il pensait nous faire rire.    ->> cette
TEST: __ocr__ on poirautait, {{cotte}} mariée n’arrivait pas à se décider.      ->> cette


# chère / obère
__ocr_chère__
    obère
        <<- /ocr/ not value(<1, "|j’|n’|l’|m’|t’|s’|il|on|elle|ça|cela|ceci|") ->> chère            && Erreur de numérisation ?

TEST: __ocr__ cette femme {{obère}} à notre cœur.                               ->> chère


# Comme / Gomme
__ocr_comme__
    Gomme
        <<- /ocr/ not value(<1, "|et|ou|où|") ->> Comme                                             && Erreur de numérisation ?

TEST: __ocr__ {{Gomme}} il était sage à cette époque-là !                       ->> Comme


# Comment / Gomment
__ocr_comment__
    Gomment
        <<- /ocr/ ->> Comment                                                                       && Erreur de numérisation ?

TEST: __ocr__ {{Gomment}} s’en sortir avec tous ces retards qui s’accumulent ?  ->> Comment


# contre / coutre / contra
__ocr_contre__
    [contra|coutre|coutra]
        <<- /ocr/ ->> contre                                                                        && Erreur de numérisation ?

TEST: __ocr__ elle était {{coutre}} cette idée et le serait toujours.           ->> contre


# dans / bans / clans
__ocr_dans__
    bans
        <<- /ocr/ not morph(<1, ":D.*:p") ->> dans                                                  && Erreur de numérisation ?

    [clans|dons]  [le|la|l’|les|un|une|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leur|leurs|chaque|chacun|plusieurs|quelques|maints|maintes|tout|tous|toute|toutes|certains|certaines|nombre]
        <<- /ocr/ not morph(<1, ":D.*:p") -1>> dans                                                 && Erreur de numérisation ?

    dam
        <<- /ocr/ not (value(<1, "|grand|") and value(<2, "|au|")) ->> dans                         && Erreur de numérisation ?

TEST: __ocr__ Mais {{bans}} cette ferme, tout était bien organisé.              ->> dans
TEST: __ocr__ sache que, {{clans}} cette ferme, on ne fait que du bio.          ->> dans
TEST: __ocr__ renvoyons ces chiens {{dam}} leur niche                           ->> dans
TEST: __ocr__ nous avons vaincu, au grand dam de tous ces grands messieurs


# dame / darne
__ocr_dame__
    [>darne|>daine]
        <<- /ocr/ ->> =\1.replace("rn", "m").replace("in", "m").replace("RN", "M").replace("IN", "M")   && Erreur de numérisation ?

TEST: __ocr__ ces {{darnes}} arrivèrent avec dix minutes d’avance.              ->> dames
TEST: __ocr__ cette {{daine}} élégamment vêtue.                                 ->> dame


# de / dé / da / dés / des / dès / dos / das
__ocr_de_des__
    da
        <<- /ocr/ ->> de                                                                            && Erreur de numérisation ?

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

    do
        <<- /ocr/ ->> de                                                                            && Erreur de numérisation ?

    dos
        <<- /ocr/ not morph(<1, ":D.*:[me]") ->> des|dès                                            && Erreur de numérisation ?

TEST: __ocr__ Le nombre {{da}} personnes endettées augmente sans cesse.         ->> de
TEST: __ocr__ le nombre {{das}} ennemis semblait croître chaque minute          ->> des
TEST: __ocr__ {{dé}} gros camions circulaient toute la journée                  ->> de
TEST: __ocr__ {{dés}} fois, ça ne passe pas                                     ->> des|dès
TEST: __ocr__ {{do}} bon matin.                                                 ->> de
TEST: __ocr__ {{dos}} camions cabossés à n’en plus finir                        ->> des|dès


# de la / delà
__ocr_de_la__
    delà
        <<- /ocr/ not value(<1, "|au|de|en|par|") ->> de la|de là                                   && Erreur de numérisation ?

TEST: __ocr__ la peinture {{delà}} maison s’écaillait                           ->> de la|de là


# doute / cloute
__ocr_doute__
    cloute
        <<- /ocr/ ->> doute                                                                         && Erreur de numérisation ?

TEST: __ocr__ Sans aucun {{cloute}}.                                            ->> doute


# du / dû
__ocr_du__
    dû  @:[NA]:[me]:[si]¬:(?:Y|Ov)
        <<- /ocr/ -1>> du                                                                           && Erreur de numérisation ?

TEST: __ocr__ prendre {{dû}} bon temps                                          ->> du
TEST: __ocr__ il aurait dû la trouver
TEST: __ocr__ Tous eussent dû subir ce supplice raffiné.


# elle / elfe
__ocr_elle__
    elfe
        <<- /ocr/ morph(<1, ":R|<start>|>,") or isNextVerb() ->> elle                               && Erreur de numérisation ?

    elfes
        <<- /ocr/ morph(<1, ":R|<start>|>,") or isNextVerb() ->> elles                              && Erreur de numérisation ?

TEST: __ocr__ {{elfe}} viendra bientôt                                          ->> elle
TEST: __ocr__ {{Elfes}} s’ennuyaient à mourir.                                  ->> Elles


# est / ost
__ocr_est__
    ost
        <<- /ocr/ ->> est                                                                           && Erreur de numérisation ?

TEST: __ocr__ Le cheval {{ost}} attaché.                                        ->> est


# et / cl
__ocr_et__
    [cl|c1|e1|el]
        <<- /ocr/ not before("[0-9] +$") ->> et                                                     && Erreur de numérisation ?

TEST: __ocr__ elle {{cl}} lui, c’était pour la vie.                             ->> et
TEST: __ocr__ {{El}} il faisait froid là-haut                                   ->> Et


# état / étal
__ocr_état_étais_étaient__
    étal
        <<- /ocr/ ->> état                                                                          && Erreur de numérisation ?

    [étals|étale]
        <<- /ocr/ ->> étais|états                                                                   && Erreur de numérisation ?

    étalent
        <<- /ocr/ ->> étaient                                                                       && Erreur de numérisation ?

TEST: __ocr__ l’{{étal}} des finances ne le permet pas                          ->> état
TEST: __ocr__ Quels {{étals}} sont venus ?                                      ->> états|étais
TEST: __ocr__ Ce qu’ils {{étalent}} vraiment, nul ne le savait.                 ->> étaient


# êtes
__ocr_êtes!6__
    ôtes
        <<- /ocr/ not value(<1, "|tu|") ->> êtes|ôtez                                               && Erreur de numérisation ?

TEST: __ocr__ vous {{ôtes}} devenus fous.                                       ->> êtes|ôtez


# fasse
__ocr_fasse__
    >fesse
    fessent
        <<- /ocr/ ->> =\1.replace("ess", "ass").replace("ESS", "ASS")                               && Erreur de numérisation ?

TEST: __ocr__ Quoiqu’ils {{fessent}} ça donne de la merde                       ->> fassent
TEST: __ocr__ {{fesse}} que Dieu nous entende                                   ->> fasse


# fille / tille
__ocr_fille__
    tille
        <<- /ocr/ ->> fille                                                                         && Erreur de numérisation ?

TEST: __ocr__ Cette {{tille}} n’en avait jamais assez.                          ->> fille


# fol·s / foi·s
__ocr_foi__
    [fol|fols]
        <<- /ocr/ ->> =\1.replace("l", "i").replace("L", "I")                                       && Erreur de numérisation ?

TEST: __ocr__  ils sont quelques {{fols}} battus                                ->> fois


# faire
__ocr_faire__
    foire
        <<- /ocr/ ->> faire                                                                         && Erreur de numérisation ?

TEST: __ocr__ j’en vois une {{foire}} l’imbécile.                               ->> faire


# fout / font
__ocr_font__
    fout
        <<- /ocr/ not value(<1, "|il|elle|on|") and not value(<2, "|il|elle|on|") ->> font          && Erreur de numérisation ?
        <<- /ocr/ __else__ and morph(>1, ":(?:Ov|Y|W)") ->> faut                                    && Erreur de numérisation ?

TEST: __ocr__ qui ne {{fout}} rien de leur journée                              ->> font
TEST: __ocr__ il {{fout}} entendre cette voix                                   ->> faut


# fut / rut
__ocr_fut__
    rut
        <<- /ocr/ ->> fut                                                                           && Erreur de numérisation ?

TEST: __ocr__ ce petit {{rut}} traité comme un chien                            ->> fut


# il / n / ils / U / Us / i1 / if / 11
__ocr_il__
    [<start>|,|(]  [n|h|d]  ~^[bcçdfghjklmnpqrstvwxz]
        <<- /ocr/ morph(\3, ":(?:O[on]|3s)") -2>> il                                                && Erreur de numérisation ?

    [U|if|i1]
        <<- /ocr/ -:>> Il|il                                                                        && Erreur de numérisation ?

    [Us|ifs|i1s]
        <<- /ocr/ -:>> Ils|ils                                                                      && Erreur de numérisation ?

    11
        <<- /ocr/ not morph(>1, ":N", "*") -:>> Il|il                                               && Erreur de numérisation ?

TEST: __ocr__ {{n}} contient trop de soufre.                                    ->> il
TEST: __ocr__ {{U}} arrive                                                      ->> Il|il
TEST: __ocr__ {{Us}} arrive demain.                                             ->> Ils|ils
TEST: __ocr__ {{i1s}} en savent beaucoup trop pour leur propre bien.            ->> Ils|ils
TEST: __ocr__ {{11}} n’en sait rien                                             ->> Il|il
TEST: __ocr__ elle a 11 ans.
TEST: __ocr__ 11 jours de souffrance
TEST: __ocr__ nous sommes le 11 septembre


# fa / la
__ocr_la__
    fa
        <<- /ocr/ ->> la                                                                            && Erreur de numérisation ?

TEST: __ocr__ dans {{fa}} demeure                                               ->> la


# large / largo
__ocr_large__
    >largo
        <<- /ocr/ ->> =\1.replace("o", "e")                                                         && Erreur de numérisation ?

TEST: __ocr__ elle pense {{largo}}                                              ->> large


# l’ / j’ / Y / I
__ocr_lj1__
    ~^[YIi]’[aâeéèêëiîïoôuyh]
        <<- /ocr/ -:>> ="l’"+\1[2:] + "|L’"+\1[2:] + "|j’"+\1[2:] + "|J’"+\1[2:]                    && Erreur de numérisation ?

    Y  ~^[aâeéèêëiîïoôuyh].
        <<- /ocr/ before("\\w") and not morph(\2, ":Y") -:>> l’\2|L’\2|j’\2|J’\2                    && Erreur de numérisation ?




    [I|i|1]  ~^[aâeéèêëiîïoôuyh].
        <<- /ocr/ -:>> l’\2|L’\2|j’\2|J’\2                                                          && Erreur de numérisation ?

TEST: __ocr__ {{Y’arrive}} demain.                                              ->> l’arrive|L’arrive|J’arrive|j’arrive
TEST: __ocr__ et {{Y acte}}                                                     ->> l’acte|L’acte|j’acte|J’acte

TEST: __ocr__ {{1 entente}} cordiale                                            ->> l’entente|L’entente|j’entente|J’entente
TEST: __ocr__ Y a des cons partout.


# l’ / V / P
__ocr_l__
    ~^V.
        <<- /ocr/ \1.istitle() and before("\\w") and not morph(\1, ">V") >>>
        <<- /ocr/ spell(\1) and spell(\1[1:]) -:>> ="v"+\1[1:] + "|l’"+\1[1:]                       && Erreur de numérisation ?
        <<- /ocr/ __else__ and spell(\1[1:]) -:>> ="l’"+\1[1:]                                      && Erreur de numérisation ?
        <<- /ocr/ __else__ and spell(\1) -:>> =\1.lower()                                           && Erreur de numérisation ?

    ~^P[aâeéêèiîïoôuyh]
        <<- /ocr/ before("\\w") and not morph(\1, ">P") >>>
        <<- /ocr/ spell(\1) and spell(\1[1:]) -:>> ="l’"+\1[1:] + "|p"+\1[1:]                       && Erreur de numérisation ?
        <<- /ocr/ __else__ and spell(\1[1:]) -:>> ="l’"+\1[1:]                                      && Erreur de numérisation ?
        <<- /ocr/ __else__ and spell(\1) -:>> =\1.lower()                                           && Erreur de numérisation ?

TEST: __ocr__ beaucoup de {{Vélos}} à Versailles.                                       ->> vélos
TEST: __ocr__ avec {{Vagile}} méthode de notre amie Virginie, tout est possible.        ->> vagile|l’agile
TEST: __ocr__ Mais {{Varme}} était déréglée                                             ->> l’arme
TEST: __ocr__ Il scrute Pierre, {{Pair}} maussade.                                      ->> l’air|pair
TEST: __ocr__ Une grosse vague arrivait et {{Peau}} remplit.                            ->> l’eau|peau
TEST: __ocr__ c’est {{Phomme}}.                                                         ->> l’homme
TEST: __ocr__ Une grande {{Perte}} pour l’humanité.                                     ->> perte
TEST: __ocr__ Viens demain.
TEST: __ocr__ Ce jour où Valérie eut sa licence de droit.


TEST: __ocr__ selon toute logique, Paris sera épargné.
TEST: __ocr__ À l’orée de la semaine de Pâques, l’incendie de la cathédrale Notre-Dame


# l’avoir / la voir
__ocr_l_avoir_la_voir__
    lavoir
        <<- /ocr/ not morph(<1, ":D.*:[me]:[si]") ->> l’avoir|la voir                               && Erreur de numérisation ?

TEST: __ocr__ il faut {{lavoir}} pour le croire.                                        ->> l’avoir|la voir


# l’était / Tétait
__ocr_l_était__
    Tétait
        <<- /ocr/ -:>> l’était|t’était|T’était                                                      && Erreur de numérisation ?

TEST: __ocr__ perdu, cet homme {{Tétait}}                                               ->> l’était|t’était|T’était


# le / les / lé / lés / lui / lai / lei / la / tu / lu
__ocr_le_la_les__
    >lé
        <<- /ocr/ ->> =\1.replace("é", "e").replace("É", "E")                                       && Erreur de numérisation ?

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

    los
        <<- /ocr/ ->> les                                                                           && Erreur de numérisation ?

    lu
        <<- /ocr/ not morph(<1, ":(?:V0|N.*:m:[si])") ->> tu|le|la                                  && Erreur de numérisation ?

TEST: __ocr__ il s’agit de {{lés}} observer.                                            ->> les
TEST: __ocr__ {{lai}} gros sont mal vus.                                                ->> lui|les
TEST: __ocr__ {{lu}} as si bien réussi                                                  ->> tu|le|la
TEST: __ocr__ contre {{los}} impies                                                     ->> les


# M. / Mr / M
__ocr_mr__
    M ,  /_Tit_
        <<- /ocr/ space(\1, 0, 1) -1:.3:>> "Mr |M. "                                                && Erreur de numérisation ?

    M  /_Tit_
        <<- /ocr/ -1:.2:>> "Mr |M. "                                                                && Erreur de numérisation ?

TEST: __ocr__ {{M, }}Patrick nous a oubliés.                                            ->> "Mr |M. "
TEST: __ocr__ Rencontre avec {{M }}Black.                                               ->> "Mr |M. "


# Mais / Hais / Mats / niais
__ocr_mais__
    Hais
        <<- /ocr/ ->> Mais                                                                          && Erreur de numérisation ?

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

    maïs
        <<- /ocr/ not morph(<1, ":D:(?:m:s|e:p)") ->> mais                                          && Erreur de numérisation ?

    niais
        <<- /ocr/ not morph(<1, ">(?:homme|ce|quel|être)/") ->> mais                                && Erreur de numérisation ?

TEST: __ocr__ {{Hais}} il en sait trop.                                                 ->> Mais
TEST: __ocr__ c’était bien, {{mats}} quelle journée                                     ->> mais
TEST: __ocr__ c’est bien, {{niais}} trop subtil.                                        ->> mais
TEST: __ocr__ c’est parfait, {{maïs}} trop subtil.                                      ->> mais


# matin
__ocr_matin__
    [mâtin|mâtins]
        <<- /ocr/ ->> =\1.replace("â", "a").replace("Â", "A")                                       && Erreur de numérisation ?

TEST: __ocr__ ce {{mâtin}}, il y eut une tempête.                                       ->> matin


# même / même / mème / mémo / môme
__ocr_même__
    >môme
        <<- /ocr/ ->> =\1.replace("ô", "ê").replace("Ô", "Ê")                                       && Erreur de numérisation ?

    >mème
        <<- /ocr/ ->> =\1.replace("è", "ê").replace("È", "Ê")                                       && Erreur de numérisation ?

    >mémo
        <<- /ocr/ ->> =\1.replace("é", "ê").replace("É", "Ê").replace("o", "e").replace("O", "E")   && Erreur de numérisation ?

TEST: __ocr__ J’en ai assez {{môme}} si ça ne se voit pas.                              ->> même
TEST: __ocr__ Ces {{mèmes}} hommes qui nous ont lâchés au pire moment                   ->> mêmes
TEST: __ocr__ C’est l’incessant retour du {{mémo}}.                                     ->> même


# mes
__ocr_mes_m_as__
    mas
        <<- /ocr/ ->> mes|m’as                                                                      && Erreur de numérisation ?

    nies
        <<- /ocr/ not value(<1, "|tu|ne|n’|") ->> mes                                               && Erreur de numérisation ?

TEST: __ocr__ elle est fière de {{mas}} succès                                          ->> mes|m’as
TEST: __ocr__ Est-ce que tu vas nier {{nies}} réussites                                 ->> mes


# mon / won
__ocr_mon__
    won
        <<- /ocr/ ->> mon                                                                           && Erreur de numérisation ?

TEST: __ocr__ c’est {{won}} ami                                                         ->> mon


# mot / mol / moi
__ocr_mot__
    [mol|mols]
        <<- /ocr/ ->> =\1.replace("l", "t").replace("L", "T")+"|"+\1.replace("l", "i").replace("L", "I")  && Erreur de numérisation ?

TEST: __ocr__ c’est un {{mol}} très dur.                                                ->> moi|mot


# moyen
__ocr_moyen__
    >moyeu
        <<- /ocr/ ->> =\1.replace("u", "n").replace("U", "N")                                       && Erreur de numérisation ?

TEST: __ocr__ quel {{moyeu}} employer ?                                                 ->> moyen


# ne / na / no / rie
__ocr_ne__
    [no|na|rie]
        <<- /ocr/ ->> ne                                                                            && Erreur de numérisation ?

TEST: __ocr__ {{no}} fais rien que tu pourrais regretter                                ->> ne
TEST: __ocr__ elle avance, mais {{rie}} prend jamais de risque inconsidéré.             ->> ne


# nous / noue / noua
__ocr_nous__
    [noue|noua]
        <<- /ocr/ ->> nous                                                                          && Erreur de numérisation ?

    mous
        <<- /ocr/ morph(<1, "<start>|>,|:(?:R|Os|X)") ->> nous                                      && Erreur de numérisation ?

TEST: __ocr__ {{noue}} attaquer à eux signerait notre perte.                            ->> nous
TEST: __ocr__ il finit par {{mous}} énerver avec ces histoires sans fin                 ->> nous
TEST: __ocr__ {{mous}} croire invincibles                                               ->> nous


# par / paf / pan / pat
__ocr_par__
    [paf|pat]
        <<- /ocr/ ->> par                                                                           && Erreur de numérisation ?

    pan
        <<- /ocr/ ->> par|peu                                                                       && Erreur de numérisation ?

    pur @:[DMT]
        <<- /ocr/ -1>> par                                                                          && Erreur de numérisation ?

TEST: __ocr__ Une seule action {{paf}} jour                                             ->> par
TEST: __ocr__ {{Pur}} la déesse !                                                       ->> Par
TEST: __ocr__ attaqué {{pan}} deux fois                                                 ->> par|peu


# par le / par la / par les / parle / parla / parles
__ocr_par_le_la_les__
    parle  @:[NA].*:[me]:[si]
        <<- /ocr/ not value(<1, "|ne|il|on|elle|je|") -1>> par le                                   && Erreur de numérisation ?

    parla  @:[NA].*:[fe]:[si]
        <<- /ocr/ not value(<1, "|ne|il|on|elle|") -1>> par la                                      && Erreur de numérisation ?

    parles  @:[NA].*:[pi]
        <<- /ocr/ not value(<1, "|ne|tu|") -1>> par les                                             && Erreur de numérisation ?

TEST: __ocr__ {{parle}} glaive et le mensonge, l’Église s’imposa.                       ->> par le
TEST: __ocr__ {{parla}} force, on peut réussir                                          ->> par la
TEST: __ocr__ tu fus trompée {{parles}} mensonges permanents de son beau-père.          ->> par les


# pendant / pondant
__ocr_pendant__
    pondant
        <<- /ocr/ ->> pendant                                                                       && Erreur de numérisation ?

TEST: __ocr__ {{pondant}} qu’elle travaille, il se prélasse.                            ->> pendant


# peu / peut / peux / pou
__ocr_peu_peux_peut__
    pou
        <<- /ocr/ not morph(<1, ":D.*:m:s") ->> peu                                                 && Erreur de numérisation ?

    poux
        <<- /ocr/ not morph(<1, ":D.*:m:p") ->> peux|peut|pour                                      && Erreur de numérisation ?

TEST: __ocr__ il est {{pou}} probable qu’il y parvienne.                                ->> peu
TEST: __ocr__ elles sont venues {{poux}} voir de leurs propres yeux.                    ->> peux|peut|pour


# plus / pins
__ocr_plus__
    pins
        <<- /ocr/ ->> plus                                                                          && Erreur de numérisation ?

TEST: __ocr__ ils sont {{pins}} instruits qu’il n’y paraît.                             ->> plus


# puis / pois
__ocr_puis__
    pois
        <<- /ocr/ not morph(<1, ":D.*:m:p") ->> puis                                                && Erreur de numérisation ?

TEST: __ocr__ elles sont venues, {{pois}} elles sont parties.                           ->> puis


# pour / pouf
__ocr_pour__
    pouf
        <<- /ocr/ not morph(<1, ":D.*:f:s") ->> pour                                                && Erreur de numérisation ?

TEST: __ocr__ {{pouf}} elle, il était prêt à tout.                                      ->> pour


# près / prés
__ocr_près__
    prés
        <<- /ocr/ not morph(<1, ":D.*:[me]:p") ->> près                                             && Erreur de numérisation ?

TEST: __ocr__ ils sont arrivés {{prés}} de la tombe.                                    ->> près


# que / quo
__ocr_que__
    qua
        <<- /ocr/ not value(<1, "|sine|") ->> que                                                   && Erreur de numérisation ?

    quo
        <<- /ocr/ not value(<1, "|statu|") ->> que                                                  && Erreur de numérisation ?

TEST: __ocr__ elles ne savent pas {{qua}} faire                                         ->> que
TEST: __ocr__ {{Quo}} penser de tout ceci ?                                             ->> Que
TEST: __ocr__ pour elle, c’est une condition sine qua non.


# qu’importe
__ocr_qu_importe__
    qu’ [importé|importa]
        <<- /ocr/ -2>> importe                                                                      && Erreur de numérisation ?

TEST: __ocr__ Qu’{{importé}} le flacon, pourvu qu’on ait l’ivresse.                     ->> importe


# reine / ruine
__ocr_reine_ruine__
    >rainer
        <<- /ocr/ value(\1, "|raine|raines|")
        ->> =\1.replace("a", "u").replace("A", "U")+"|"+\1.replace("a", "e").replace("A", "E")      && Erreur de numérisation ?
        <<- /ocr/ __else__ ->> =\1.replace("ain", "uin").replace("AIN", "UIN")                      && Erreur de numérisation ?

TEST: __ocr__ tu vas {{rainer}} notre réputation.                                       ->> ruiner
TEST: __ocr__ des {{raines}} mal aimées.                                                ->> reines|ruines
TEST: __ocr__ il {{rainait}} ses dernières forces pour rien                             ->> ruinait


# qu’étant
__ocr_qu_étant__
    quêtant
        <<- /ocr/ ->> qu’étant                                                                      && Erreur de numérisation ?

TEST: __ocr__ {{Quêtant}} la fille d’une déesse, elle n’avait pas à se justifier.       ->> Qu’étant


# qui / gui
__ocr_qui__
    gui
        <<- /ocr/ not morph(<1, ":D.*:m:s") ->> qui                                                 && Erreur de numérisation ?

TEST: __ocr__ avec {{gui}} faire alliance ?                                             ->> qui


# s’il / sil
__ocr_s_il__
    sil
        <<- /ocr/ ->> s’il                                                                          && Erreur de numérisation ?

    sils
        <<- /ocr/ ->> s’ils                                                                         && Erreur de numérisation ?

TEST: __ocr__ {{sil}} avait su, il n’aurait rien tenté de trop audacieux.               ->> s’il
TEST: __ocr__ {{sils}} étaient venus, on l’aurait vu.                                   ->> s’ils


# son / sou
__ocr_son__
    sou
        <<- /ocr/ ->> son                                                                           && Erreur de numérisation ?

TEST: __ocr__ ça vient de {{sou}} ami                                                   ->> son


# sur / sar
__ocr_sur__
    sar
        <<- /ocr/ ->> sur                                                                           && Erreur de numérisation ?

    sui
        <<- /ocr/ not value(>1, "|generis|") ->> sur                                                && Erreur de numérisation ?

TEST: __ocr__ il ne savait rien {{sar}} eux.                                            ->> sur
TEST: __ocr__ il en est {{sui}}                                                         ->> sur


# tard / lard
__ocr_tard__
    lard
        <<- /ocr/ not value(<1, "|le|ce|mon|ton|son|du|un|") ->> tard                               && Erreur de numérisation ?

TEST: __ocr__ elles seront là tôt ou {{lard}}.                                          ->> tard


# tandis que / taudis
__ocr_tandis__
    taudis [que|qu’]
        <<- /ocr/ -1>> tandis                                                                       && Erreur de numérisation ?

TEST: __ocr__ mais {{taudis}} qu’elle œuvrait à leur salut, les nuages s’amoncelaient.  ->> tandis


# l’est / Test
__ocr_l_est__
    Test
        <<- /ocr/ before("\\w") -:>> l’est                                                          && Erreur de numérisation ?

TEST: __ocr__ ça {{Test}} à leurs yeux.                                                 ->> l’est


# tête / tète
__ocr_tête__
    tète
        <<- /ocr/ not value(<1, "|je|il|elle|on|ne|ça|") ->> =\1.replace("è", "ê").replace("È", "Ê")    && Erreur de numérisation ?

TEST: __ocr__ cette forte {{tète}} n’écoute jamais personne.                            ->> tête


# tin / fin / un
__ocr_fin_un__
    tin
        <<- /ocr/ ->> fin|un                                                                        && Erreur de numérisation ?

TEST: __ocr__ c’était {{tin}} marchand vaniteux.                                        ->> fin|un


# ton / tan
__ocr_ton__
    >tan
        <<- /ocr/ ->> =\1.replace("a", "o").replace("A", "O")                                       && Erreur de numérisation ?

TEST: __ocr__ pour {{tan}} propre bien.                                                 ->> ton


# toute / tonte
__ocr_toute__
    >tonte
        <<- /ocr/ ->> =\1.replace("n", "u").replace("N", "U")                                       && Erreur de numérisation ?

TEST: __ocr__ à {{tonte}} fin utile                                                     ->> toute


# tu es / tues
__ocr_tu_es__
    tues
        <<- /ocr/ not morph(<1, ":(?:N.*:f:p|V0e.*:3p)|>(?:tu|ne)/") ->> tu es                      && Erreur de numérisation ?

TEST: __ocr__ dans tous les cas, {{tues}} foutue.                                       ->> tu es
TEST: __ocr__ ses actions tues.


# un / vin
__ocr_un__
    vin
        <<- /ocr/ not value(<1, "|ce|de|du|un|quel|leur|le|") ->> un                                && Erreur de numérisation ?

TEST: __ocr__ {{vin}} mathématicien hors du commun.                                     ->> un


# une / ure / vine
__ocr_une__
    ure
        <<- /ocr/ ->> une                                                                           && Erreur de numérisation ?

    vine
        <<- /ocr/ ->> une                                                                           && Erreur de numérisation ?

TEST: __ocr__ il avait {{ure}} femme élégante et silencieuse                            ->> une
TEST: __ocr__ c’est pour {{vine}} amie                                                  ->> une


# vêtement / vêlement
__ocr_vêtement__
    >vêlement
        <<- /ocr/ ->> =\1.replace("l", "t").replace("L", "T")                                       && Erreur de numérisation ?

TEST: __ocr__ il enfila ses {{vêlements}} en hâte.                                      ->> vêtements


# vite
__ocr_vite__
    vile
        <<- /ocr/ ->> vite                                                                          && Erreur de numérisation ?

TEST: __ocr__ Elle est {{vile}} débordée par l’ampleur de la tâche.                     ->> vite


# voilà
__ocr_voilà__
    [<start>|,|(]  ?[me|te|le|la|nous|vous|les]¿  voila
        <<- /ocr/ --1>> voilà                                                                       && Erreur de numérisation ?

TEST: __ocr__ nous {{voila}}                                                            ->> voilà


# voit / volt
__ocr_voit__
    volt
        <<- /ocr/ ->> voit                                                                          && Erreur de numérisation ?

TEST: __ocr__ La femme {{volt}} plus loin                                               ->> voit


# vous / voua / voue
__ocr_vous__
    [voue|voua]
        <<- /ocr/ ->> vous                                                                          && Erreur de numérisation ?

TEST: __ocr__ avec {{voue}}, je n’ai pas confiance.                                     ->> vous



@@@@
@@@@
@@@@
@@@@
................................................................................
#    *WORD  *WORD
#    <<- \1 == \2
#        and not value(\2, "|nous|vous|faire|en|la|lui|donnant|œuvre|ah|oh|eh|hé|ho|ha|hou|olé|joli|Bora|couvent|dément|sapiens|très|vroum|")
#        and not (value(\1, "|est|une|") and value(<1, "|l’|d’|"))
#        and not (\2 == "mieux" and value(<1, "|qui|"))
#    ->> \1                                                                                          && Doublon.
#
#TEST: Il y a un {{doublon doublon}}.                                                                ->> doublon


!!
!!
!!!! Élisions & euphonie                                                                          !!
!!
!!
................................................................................
    vieux  homme
        <<- /eleu/ -1>> vieil                                   && Euphonie. Écrivez “vieil” s’il précède un nom masculin singulier commençant par une voyelle ou un h.|https://fr.wikipedia.org/wiki/Euphonie

    vieux  ~^[aâeéèêiîoôuûyœæ]
        <<- /eleu/ morph(\2, ":[NA].*:[me]:s", ":[123][sp]")
        -1>> vieil                                              && Euphonie. Écrivez “vieil” s’il précède un nom masculin singulier commençant par une voyelle ou un h.|https://fr.wikipedia.org/wiki/Euphonie

TEST: c’est un {{vieux}} imbécile.                                                  ->> vieil
TEST: Le {{vieux}} homme était parti.                                               ->> vieil
TEST: Diviser les jeunes et les vieux est un peu son fonds de commerce


__eleu_n_superflu__
    on n’ [a|avait|eut|aura|aurait|eût] rarement
        <<- /eleu/ -2:3>> \3                                    && Adverbe de négation erroné. Rarement signifie que ça arrive, pas que ça n’arrive pas.
................................................................................
    *NUM  -  ~^\d\d?$  -  ~^\d{2,5}$
        <<- \1.isdigit() ~>> ␣
        <<- =>> setmeta(\1, "DATE")


__date_jour_mois_année__
    31 [avril|juin|septembre|novembre]
        <<- /date/ space(\1, 1, 1) ->> 30 \2                                                        && Cette date est invalide. Il n’y a que 30 jours en \2.

    [30|31] février
        <<- /date/ space(\1, 1, 1) ->> 28 février|29 février                                        && Cette date est invalide. Il n’y a que 28 ou 29 jours en février.

    29 février ~^\d{2,5}$
        <<- /date/ not checkDate(\1, \2, \3) ->> 28 février \3                                      && En l’année “\3”, il n’y a que 28 jours en février.

    ~^\d\d?$  [janvier|février|mars|avril|mai|juin|juillet|aout|août|septembre|octobre|novembre|décembre]  ~^\d{2,5}$

        <<- /date/ not (\1 == "29" and value(\2, "|février|")) and not checkDate(\1, \2, \3) ->> _  && Cette date est invalide.

TEST: le {{31 avril}}                                                       ->> 30 avril
TEST: le {{30 février}}                                                     ->> 28 février|29 février
TEST: {{29 février 2011}}                                                   ->> 28 février 2011
TEST: {{32 mars 2020}}                                                      ->>


__date_journée_jour_mois_année__
    ([lundi|mardi|mercredi|jeudi|vendredi|samedi|dimanche])  ?,¿  ?le¿  (~^\d\d?$) - (~^\d\d?$) - (~^\d{2,5}$)
    ([lundi|mardi|mercredi|jeudi|vendredi|samedi|dimanche])  ?,¿  ?le¿  (~^\d\d?$)  ([janvier|février|mars|avril|mai|juin|juillet|aout|août|septembre|octobre|novembre|décembre])  (~^\d{2,5}$)
        <<- /date/ not after("^ +av(?:ant|) +J(?:C|ésus-Christ)") and not checkDay(\1, \2, \3, \4)
        -1>> =getDay(\2, \3, \4)
        && Le jour de la date suivante est incorrect (selon le calendrier grégorien).|https://fr.wikipedia.org/wiki/Passage_du_calendrier_julien_au_calendrier_gr%C3%A9gorien

TEST: {{samedi}}, le 10-06-2014                                             ->> mardi
TEST: {{lundi}} le 23-07-2019                                               ->>
TEST: {{mardi}} 24-07-2019                                                  ->>
TEST: {{mercredi}}, 20-07-2019                                              ->>
TEST: {{mercredi}} le 10 juin 2014                                          ->> mardi
TEST: {{mercredi}}, le 10 juin 2014                                         ->> mardi
TEST: {{lundi}}, 18 août 1912                                               ->> dimanche
TEST: {{jeudi}} 17 aout 1912                                                ->> samedi
TEST: {{jeudi}}, 18 août 1563 : mort de La Boétie (calendrier julien)       ->> mercredi
TEST: lundi, 18 août 1912 avant Jésus-Christ (date imaginaire)

TEST: mercredi, 18 août 1563 : mort de La Boétie (calendrier julien)


__date_nuits_soirées_matinées__
    !! dans la [matinée|nuit|soirée] de dimanche à lundi ¡¡
    !! dans la [matinée|nuit|soirée] de lundi à mardi ¡¡
    !! dans la [matinée|nuit|soirée] de mardi à mercredi ¡¡
................................................................................

    >porter un [cou|cout|coût]
        <<- /conf/ --1>> coup                   && Confusion. Le cou est la partie séparant la tête du corps. Le coût indique ce que ça coûte. Pour ce qui frappe, écrivez “coup”.

    >encaisser [les|des|ces|mes|tes|ses|nos|vos|leurs] [cous|coûts|couts]
        <<- /conf/ --1>> coups                  && Confusion. Le cou est la partie séparant la tête du corps. Le coût indique ce que ça coûte. Pour ce qui frappe, écrivez “coup”.

TEST: il a été roué de {{cou}}                                                          ->> coups
TEST: Je vais tordre le {{coup}} à toutes ces idées stupides, une par une.              ->> cou
TEST: Implacable, elle a rendu {{cout pour cout}} sans se départir de son calme.        ->> coup pour coup
TEST: j’avais prévu le {{cou}}                                                          ->> coup|coût|cout
TEST: il a pris ses jambes à son {{coup}}                                               ->> cou
TEST: elles ont pris leurs jambes à leur {{cout}}                                       ->> cou
TEST: il a pris {{ces}} jambes à son cou                                                ->> ses
TEST: il a pris {{ces}} jambes à son {{cout}}                                           ->> ses|||cou
TEST: il faut porter un {{cou}} à ces salauds                                           ->> coup
TEST: encaisser les {{cous}}                                                            ->> coups

................................................................................
            and not (value(\1, "|de|d’|") and value(<1, "|un|une|"))
        -4>> =suggPlur(\4)                                                                          && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au pluriel.

TEST: ces {{beaux}} {{institutions}}                                            ->> belles|||
TEST: nos petites {{fille}}                                                     ->> filles
TEST: de plusieurs {{grands}} {{avocates}}                                      ->> grandes|||avocats
TEST: de vos défauts {{terrible}}, je connais presque tout.                     ->> terribles
TEST: ces militant·e·s {{acharné}}.                                             ->> acharnés
TEST: Les éléments caractéristiques liés à ses valeurs historique et architecturale
TEST: Une des pierres veinée de rouge…
TEST: Pour maintenir le potentiel de membrane qui lui permet de communiquer avec ses voisins sous forme d’influx nerveux, un neurone a besoin d’énergie.
TEST: ces religieux inflexibles envers les femmes mais compatissants envers les tyrans qui soutiennent leur religion.
TEST: le bruit de nos pas étouffé par l’épais tapis.


................................................................................
        <<- /gn/ __also__ and hasFemForm(\2)                                    -2>> =suggMasSing(\2, True)     && Accord de genre et de nombre erroné : le déterminant « \1 » est au masculin singulier.
        <<- /gn/ morph(\2, ":[NA].*:m:p", ":(?:V0|Oo|[NA].*:[me]:[si])")        -1>> quels                      && Accord de nombre erroné : « \2 » est au pluriel.
        <<- /gn/ __also__                                                       -2>> =suggSing(\2)              && Accord de nombre erroné : le déterminant « \1 » est au masculin singulier.
        <<- /gn/ morph(\2, ":[NA].*:f:[si]", ":(?:V0|Oo|[NA].*:[me]:[si])")     -1>> quelle                     && Accord de genre erroné : « \2 » est féminin.
        <<- /gn/ __also__ and hasFemForm(\2)                                    -2>> =suggMasSing(\2, True)     && Accord de genre erroné : le déterminant « \1 » est au masculin singulier.

TEST: {{Quel}} femme.                                           ->> Quelle
TEST: {{Quel}} {{partie}}                                       ->> Quelle|||parti
TEST: {{Quel}} {{paris}}                                        ->> Quels|||pari
TEST: {{Quel}} {{parties}}                                      ->> Quelles|||parti
TEST: Quel emmerdeur

__gn_quels_1m__
    quels  *WORD
        <<- /gn/ morph(\2, ":[NA].*:f:s", ":(?:V0|Oo|[NA].*:[me]:[pi])")        -1>> quelle                     && Accord de genre et de nombre erroné : « \2 » est féminin et au singulier.
        <<- /gn/ __also__ and hasFemForm(\2)                                    -2>> =suggMasPlur(\2, True)     && Accord de genre et de nombre erroné : le déterminant « \1 » est au masculin pluriel.
        <<- /gn/ morph(\2, ":[NA].*:m:s", ":(?:V0|Oo|[NA].*:[me]:[pi])")        -1>> quel                       && Accord de nombre erroné : « \2 » est au singulier.
        <<- /gn/ __also__                                                       -2>> =suggPlur(\2)              && Accord de nombre erroné : le déterminant « \1 » est au masculin pluriel.
        <<- /gn/ morph(\2, ":[NA].*:f:[pi]", ":(?:V0|Oo|[NA].*:[me]:[pi])")     -1>> quelles                    && Accord de genre erroné : « \2 » est féminin.
        <<- /gn/ __also__ and hasFemForm(\2)                                    -2>> =suggMasPlur(\2, True)     && Accord de genre erroné : le déterminant « \1 » est au masculin pluriel.

TEST: {{Quels}} chanson.                                        ->> Quelle
TEST: {{Quels}} {{chant}}                                       ->> Quel|||chants
TEST: {{Quels}} {{idiotes}}                                     ->> Quelles|||idiots
TEST: {{Quels}} {{avocate}}                                     ->> Quelle|||avocats
TEST: Quels idiots

__gn_quelle_1m__
    quelle  *WORD
        <<- /gn/ morph(\2, ":[NA].*:m:p", ":(?:V0|Oo|[NA].*:[fe]:[si])")        -1>> quels                      && Accord de genre et de nombre erroné : « \2 » est masculin et au pluriel.
        <<- /gn/ __also__ and hasFemForm(\2)                                    -2>> =suggFemSing(\2, True)     && Accord de genre et de nombre erroné : le déterminant « \1 » est au féminin singulier.
        <<- /gn/ morph(\2, ":[NA].*:f:p", ":(?:V0|Oo|[NA].*:[fe]:[si])")        -1>> quelles                    && Accord de nombre erroné : « \2 » est au pluriel.
        <<- /gn/ __also__                                                       -2>> =suggSing(\2)              && Accord de nombre erroné : le déterminant « \1 » est au féminin singulier.
        <<- /gn/ morph(\2, ":[NA].*:m:[si]", ":(?:V0|Oo|[NA].*:[fe]:[si])")     -1>> quel                       && Accord de genre erroné : « \2 » est masculin.
        <<- /gn/ __also__ and hasFemForm(\2)                                    -2>> =suggFemSing(\2, True)     && Accord de genre erroné : le déterminant « \1 » est au féminin singulier.

TEST: {{Quelle}} homme.                                         ->> Quel
TEST: {{Quelle}} {{folles}}                                     ->> Quelles|||folle
TEST: {{Quelle}} {{chien}}                                      ->> Quel|||chienne
TEST: {{Quelle}} {{chats}}                                      ->> Quels|||chatte
TEST: Quelle sale journée…
TEST: On pourrait également rappeler à quel point l’Église catholique fut hostile à la laïcité et la combattit violemment.

__gn_quelles_1m!8__
    quelles  *WORD
        <<- /gn/ morph(\2, ":[NA].*:m:s", ":(?:V0|Oo|[NA].*:[fe]:[pi])")        -1>> quel                       && Accord de genre et de nombre erroné. « \2 » est masculin et au singulier.
        <<- /gn/ __also__ and hasFemForm(\2)                                    -2>> =suggFemPlur(\2, True)     && Accord de genre et de nombre erroné : le déterminant « \1 » est au féminin pluriel.
        <<- /gn/ morph(\2, ":[NA].*:f:s", ":(?:V0|Oo|[NA].*:[fe]:[pi])")        -1>> quelle                     && Accord de nombre erroné : « \2 » est au singulier.
        <<- /gn/ __also__                                                       -2>> =suggPlur(\2)              && Accord de nombre erroné : le déterminant « \1 » est au féminin pluriel.
        <<- /gn/ morph(\2, ":[NA].*:m:[pi]", ":(?:V0|Oo|[NA].*:[fe]:[pi])")     -1>> quels                      && Accord de genre erroné : « \2 » est masculin.
        <<- /gn/ __also__ and hasFemForm(\2)                                    -2>> =suggFemPlur(\2, True)     && Accord de genre erroné : le déterminant « \1 » est au féminin pluriel.

TEST: {{Quelles}} hommes                                        ->> Quels
TEST: {{Quelles}} {{tarés}}.                                    ->> Quels|||tarées
TEST: {{Quelles}} {{cinglé}}.                                   ->> Quel|||cinglées
TEST: {{Quelles}} {{idiote}}.                                   ->> Quelle|||idiotes
TEST: Quelles grandes tours
TEST: Quelles drôles de prunes


__gn_quel_quelle_accord_être__
    [quel|quelle]  [sont|étaient|seront|serons|seraient|furent|fussent]
        <<- /gn/ not value(<1, "|tel|telle|")
................................................................................
        -2>> seuls                                                         && Si “\2” se réfère au substantif masculin “\4”, il faut le mettre au masculin.

TEST: {{seul}} cette partie peut nous aider                                                         ->> seule
TEST: {{seule}} notre ordinateur serait assez puissant pour ça                                      ->> seul
TEST: {{seuls}} vos forces suffirent                                                                ->> seules
TEST: {{seules}} nos tests réussirent à la convaincre.                                              ->> seuls
TEST: {{seules}} des hommes et des ados costauds peuvent y parvenir                                 ->> seuls
TEST: Jusqu’ici, {{seuls}} des informations industrielles ou commerciales avaient fuité             ->> seules
TEST: seules des jours entiers, elles n’en pouvaient plus
TEST: seule du matin au soir
TEST: seuls le jour de Noël, c’est difficile
TEST: seul la matinée du 13 à l’école, il ne pouvait être à l’autre bout de la ville


!!
................................................................................
    [<start>|,|(]  étant [donnés|donnée|données]
        <<- /gn/ -3>> donné                                                                 && “Étant donné” : considéré comme préposition, invariable.

    [<start>|,|(]  [vus|vue|vues]  [le|la|l’|les|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leur|leurs]
    [<start>|,|(]  [vus|vue|vues]  [que|qu’]
        <<- /gn/ -2>> vu                                                                    && “Vu que”. Considéré comme préposition, invariable.

TEST: {{comprises}} mes prestations sur place                                                       ->> compris
TEST: {{non-comprises}} les boissons                                                                ->> non compris
TEST: non {{comprise}} la remise en état                                                            ->> compris
TEST: {{Exceptés}} les petits, tous sont tombes malades.                                            ->> Excepté
TEST: {{Attendues}} qu’on n’en sait rien, impossible de tirer des conclusions définitives.          ->> Attendu
TEST: Il viendra, étant {{donnée}} son addiction…                                                   ->> donné
TEST: {{Vues}} les idioties qu’on entend, normal qu’on perde la tête.                               ->> Vu
TEST: {{Passées}} les premières heures du jour…                                                     ->> Passé
TEST: Il faut même être indulgent pour accorder une place à cette dernière, vu qu’elle a pour condition le mensonge des instincts
TEST: Vu la dureté extrême des conditions de survie…
TEST: vu les circonstances


#### ce + sont / étaient

................................................................................
    [ceux|celles]  qui  $:Q¬:G   [le|la|l’|les|en|nous|vous|lui|leur|y]  @:(?:[123][sp]|P)
    [ceux|celles]  qui  $:Q¬:G   [nous|vous]     [le|la|l’|les|en|y]     @:(?:[123][sp]|P)
    [ceux|celles]  qui  $:Q¬:G   [le|la|l’|les]  [lui|leur|en|y]         @:(?:[123][sp]|P)
    [ceux|celles]  qui  $:Q¬:G   [lui|leur|y]    en                      @:(?:[123][sp]|P)
    [ceux|celles]  qui  $:Q¬:G   @:(?:[123][sp]|P)
        <<- /conf/ not morph(\3, ":3[sp]") -3>> =suggVerb(\3, ":3p")                                && Confusion probable entre participe passé et forme verbale conjuguée.

TEST: qu’est-ce qui {{défini}} un attentat ?                        ->> définit|définissait
TEST: Qui {{voulu}} la paix ?                                       ->> veut|voulut|voulait
TEST: le prix sera pour celui qui {{réussi}}                        ->> réussit|réussissait
TEST: celui qui {{réussi}} aura la vie éternelle                    ->> réussit|réussissait
TEST: celles qui {{demandées}} viendront demain.                    ->> demandent|demandaient|demandèrent


__conf_conj_suj_verbe_adj__
    [quand|lorsque|puisque]  [le|cet|du]                                    *WORD  ~..[éeiut]s?$  ,  $:Os
        <<- /conf/ morph(\3, ":[NA].*:[me]:[si]") and  morph(\4, ":Q.*:[me]:[si]", ":3s")
        -4>> =suggVerb(\4, ":3s")           && Confusion probable. La proposition « \1 \2 \3 \4 » ne contient apparemment aucun verbe. Si le syntagme « \2 \3 \4 » est un complément circonstanciel ou une locution adverbiale, il serait préférable de mettre une virgule avant (mise en incise).
        <<- /conf/ __also__ -1>> \1,        && Si le syntagme « \2 \3 \4 » est un complément circonstanciel ou une locution adverbiale, il serait préférable de le placer en incise.

    [quand|lorsque|puisque]  ce                                             *WORD  ~..[éeiut]s?$  ,  $:Os
        <<- /conf/ morph(\3, ":[NA].*:[me]:[si]", ">être/") and  morph(\4, ":Q.*:[me]:[si]", ":3s")
        -4>> =suggVerb(\4, ":3s")           && Confusion probable. La proposition « \1 \2 \3 \4 » ne contient apparemment aucun verbe. Si le syntagme « \2 \3 \4 » est un complément circonstanciel ou une locution adverbiale, il serait préférable de mettre une virgule avant (mise en incise).
        <<- /conf/ __also__ -1>> \1,        && Si le syntagme « \2 \3 \4 » est un complément circonstanciel ou une locution adverbiale, il serait préférable de le placer en incise.

    [quand|lorsque|puisque]  [la|cette|ma|ta|sa]                            *WORD  ~..[éeiut]e$   ,  $:Os
        <<- /conf/ morph(\3, ":[NA].*:[fe]:[si]") and  morph(\4, ":Q.*:[fe]:[si]", ":3s")
        -4>> =suggVerb(\4, ":3s")           && Confusion probable. La proposition « \1 \2 \3 \4 » ne contient apparemment aucun verbe. Si le syntagme « \2 \3 \4 » est un complément circonstanciel ou une locution adverbiale, il serait préférable de mettre une virgule avant (mise en incise).
        <<- /conf/ __also__ -1>> \1,        && Si le syntagme « \2 \3 \4 » est un complément circonstanciel ou une locution adverbiale, il serait préférable de le placer en incise.

    [quand|lorsque|puisque]  [l’|mon|ton|ton|notre|votre|leur]              *WORD  ~..[éeiut]e?$  ,  $:Os
        <<- /conf/ morph(\3, ":[NA].*:[si]") and  morph(\4, ":Q.*:[si]", ":3s")
        -4>> =suggVerb(\4, ":3s")           && Confusion probable. La proposition « \1 \2 \3 \4 » ne contient apparemment aucun verbe. Si le syntagme « \2 \3 \4 » est un complément circonstanciel ou une locution adverbiale, il serait préférable de mettre une virgule avant (mise en incise).
        <<- /conf/ __also__ -1>> \1,        && Si le syntagme « \2 \3 \4 » est un complément circonstanciel ou une locution adverbiale, il serait préférable de le placer en incise.

    [quand|lorsque|puisque]  [les|cet|mes|tes|ses|nos|vos|leurs|quelques]   *WORD  ~..[éeiut]e?s$ ,  $:Os
        <<- /conf/ morph(\3, ":[NA].*:[pi]") and  morph(\4, ":Q.*:[pi]", ":3s")
        -4>> =suggVerb(\4, ":3s")           && Confusion probable. La proposition « \1 \2 \3 \4 » ne contient apparemment aucun verbe. Si le syntagme « \2 \3 \4 » est un complément circonstanciel ou une locution adverbiale, il serait préférable de mettre une virgule avant (mise en incise).
        <<- /conf/ __also__ -1>> \1,        && Si le syntagme « \2 \3 \4 » est un complément circonstanciel ou une locution adverbiale, il serait préférable de le placer en incise.

    [quand|lorsque|puisque]  [plusieurs|certains|certaines|maints|maintes]  *WORD  ~..[éeiut]e?s$ ,  $:Os
        <<- /conf/ morph(\3, ":[NA].*:[pi]", ":3p") and  morph(\4, ":Q.*:[pi]", ":3s")
        -4>> =suggVerb(\4, ":3s")           && Confusion probable. La proposition « \1 \2 \3 \4 » ne contient apparemment aucun verbe. Si le syntagme « \2 \3 \4 » est un complément circonstanciel ou une locution adverbiale, il serait préférable de mettre une virgule avant (mise en incise).
        <<- /conf/ __also__ -1>> \1,        && Si le syntagme « \2 \3 \4 » est un complément circonstanciel ou une locution adverbiale, il serait préférable de le placer en incise.

TEST: {{quand}} le facteur {{arrivé}}, il se précipitait à la fenêtre.          ->> quand,|||arrive|arrivait|arriva
TEST: {{puisque}} la fête {{finie}}, je vais partir.                            ->> puisque,|||finit|finissait
TEST: {{lorsque}} l’horloge {{sonnée}}, nous nous levions à la hâte             ->> lorsque,|||sonne|sonnait|sonna
TEST: {{quand}} les croissants {{arrivés}}, on se jetait dessus                 ->> quand,|||arrive|arrivait|arriva
TEST: {{lorsque}} certains idiots {{oubliés}}, on riait aux éclats              ->> lorsque,|||oublie|oubliait|oublia
TEST: {{lorsque}} ton code {{grossi}}, il faut le factoriser                    ->> lorsque,|||grossit|grossissait
TEST: {{quand}} ce chien {{parti}}, je fus surpris                              ->> quand,|||part|partit|partait
TEST: quand le jour venu, il fallut se battre, nous étions prêts.
TEST: quand ce fut fait, il lui manqua la force de répliquer.


__conf_qui_pronom_verbe__
    qui  [lui|nous|vous]  @:[NA]¬:(?:[123][sp]|P)
        <<- /conf/ hasSimil(\-1, ":(?:[123][sp]|P)") --1>> =suggSimil(\-1, ":[123][sp]")            && Confusion probable : “\-1” n’est pas une forme verbale conjuguée.
................................................................................
TEST: censée être la meilleure de son groupe


__conf_adj_de_voir_que__
    [<start>|,|(]  *WORD  de  [voir|constater]  [que|qu’]
        <<- /conf/ morph(\2, ":V1.*:Y") -2>> =suggVerbPpas(\2)                          && Confusion probable. Si vous décrivez un état de fait (et non une action), il faut un participe passé.

TEST: {{tétaniser}} de voir que leurs théories grandioses ne valent rien        ->> tétanisé|tétanisée|tétanisés|tétanisées


!!!! Il reste                                                                                     !!

__conj_il_reste__
    ils [restent|restaient|resteraient] [des|ces|nos|vos|ses|leurs|quelques|plusieurs] @:[NA].*:[pi]
        <<- /conj/ value(\2, "|restent|") -1:2>> il reste                               && Il reste, c’est-à-dire ce qui reste, toujours au singulier. Tout comme “il pleut des cordes”.
................................................................................
TEST: Cela fait un petit temps qu’on ne s’est plus vus.
TEST: Cela s’est entre autres traduit par l’absence de grandes controverses sur la sécurité des vaccins


__ppas_pron_pluriel_se_être_ppas__
    <start>  nous                   ?[ne|n’]¿  nous     >être  @q.*:Q.*:p  @:[DB]  @:[NA]  [<end>|,|)]
    <start>  vous                   ?[ne|n’]¿  vous     >être  @q.*:Q.*:p  @:[DB]  @:[NA]  [<end>|,|)]
    <start>  [on|ils|elles|iels]    ?[ne|n’]¿  [se|s’]  >être  @q.*:Q.*:p  @:[DB]  @:[NA]  [<end>|,|)]
        <<- /ppas/ not morph(\-2, ">(?:matin|soir|soirée|nuit|après-midi|jour|année|semaine|mois|seconde|minute|heure|siècle|millénaire|fois)/") --4>> =suggVerbPpas(\-4, ":m:s")
        && Usage pronominal. Si le syntagme “\-3 \-2” est le COD du participe passé “\-4”, alors ce participe passé devrait être au masculin singulier. (Il ne s’accorde avec le sujet “\2” que si l’action agit sur “\2”.)

TEST: Ils se sont {{échangés}} leurs vœux.                          ->> échangé
TEST: elles s’étaient {{données}} le mot                            ->> donné
TEST: on se serait {{donnés}} la main, si on avait su.              ->> donné
TEST: elles se seraient {{prises}} la tête                          ->> pris|prisé
TEST: on s’est comportés comme des porcs.
TEST: nous ne nous sommes pas compris un seul moment
TEST: vous vous êtes compromis plusieurs fois
TEST: elles se sont prises en main.
TEST: elles s’étaient aimées ce matin.


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


__conf_vc_int_imp_verbe!3__
    [/_VCint_|/_VCimp_]  @:[123][sp]¬:[GNAQWMÉ]
        <<- /conf/ not value(\1, "|rendez-vous|entre-nous|entre-vous|entre-elles|") and not morphVC(\1, ":V0")
        -2>> _                                                                  && Incohérence probable. Après une forme verbale comme “\1”, il ne faut pas une forme verbale comme “\2”.

TEST: Annonce-le {{dépare}}.                                    ->>
TEST: prends-la {{tète}}.                                       ->>
TEST: Fait-il envie ?
TEST: alors rappelons-nous Marie


__conf_verbes_det_verbe_nom__
    [<start>|,|(]  ?[ne|n’]¿   ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿  @:[123][sp]¬:[NAGM]  le     @:[123][sp]¬:[NA].*:[me]:[si]
    [<start>|,|(]  ?[ne|n’]¿   [me|m’|te|t’|se|s’|nous|vous]   [le|la|l’|les|en|y]         @:[123][sp]¬:[NAGM]  le     @:[123][sp]¬:[NA].*:[me]:[si]
................................................................................
!!

__conj_que_où_comment_verbe_sans_sujet!3__
    [que|qu’|où|comment|combien|dont|quand|pourquoi|puisque|puisqu’|lorsque|lorsqu’|auquel|auxquels|auxquelles|duquel|desquels|desquelles|lequel|laquelle|lesquels|lesquelles|si]  @:[12][sp]¬:(?:G|W|3[sp]|Y|P|Q|N|A|M|VC)
        <<- /conj/ morph(\2, ":[12]s") and not value(>1, "|je|tu|") -2>> =suggVerb(\2, ":3s")                           && Conjugaison erronée. Ce verbe devrait être à la 3ᵉ personne.
        <<- /conj/ __else__ and morph(\2, ":[12]p") and not value(>1, "|nous|vous|") -2>> =suggVerb(\2, ":3p")          && Conjugaison erronée. Ce verbe devrait être à la 3ᵉ personne.

TEST: Qu’est-ce que tu crois que {{deviens}} réellement, immanquablement et subitement cet homme après une telle dérouillée ?       ->> devient
TEST: peu importe ce que tu crois du lieu où l’{{abandonnerais}} ce salopard…                                                       ->> abandonnerait
TEST: nous savons comment {{arriverons}} ces problèmes…                                                                             ->> arriveront
TEST: nous le pensons puisque {{paraitrons}} folles ces augmentations                                                               ->> paraitront
TEST: ces sciences, ces religions, ces philosophies ne sont que contes destinés à nous donner l’illusion de la connaissance.
TEST: Le ministre de l’Intérieur a estimé que Calais avait vécu “un degré de violence jamais connu”.
TEST: à des règles aussi absurdes que précises



!!
................................................................................
        <<- /conj/ morph(\3, ":V0e", ":3s") -3>> =suggVerb(\3, ":3s")                       && Conjugaison erronée. Accord avec “\4 \5”. Mettez “être” à la 3ᵉ personne du singulier.

    [quels|quelles]  [que|qu’]  >être  [le|la|l’|ce|cet|cette|mon|ton|son|ma|ta|sa|notre|votre|leur]  *WORD
        <<- /conj/ not ( morph(\3, ":3p") and (value(>1, "|et|") or tag(\5, "_enum_")) )
        -3>> =suggVerb(\3, ":3s")                                                           && Conjugaison erronée. Accord avec “\4 \5”. Mettez “être” à la 3ᵉ personne du singulier.
        <<- /conj/ __also__ -1>> =\1[:-1]                                                   && Accord avec “\4 \5”. Utilisez le singulier.

TEST: Quel que {{soient}} son passe-temps, il y consacre trop de temps.                             ->> soit
TEST: {{Quels}} que {{soient}} le feu utilisé.
TEST: {{Quels}} que {{soit}} leur problème, ça n’en finit jamais.
TEST: {{Quelles}} que {{soit}} leur voiture, elle tombe constamment en panne.
TEST: Quelles que soient la vitesse et l’efficacité de cette méthode, ça me semble moins abouti que notre solution maison.
TEST: Quels que soient le carnage, l’abomination, le crime commis, nous les poursuivrons.

# pluriel