Grammalecte  Check-in [070d93f9ad]

Overview
Comment:[fr] conversion: regex rules -> graph rules
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | fr | rg
Files: files | file ages | folders
SHA3-256: 070d93f9adff4e89bfa4a34be929454d12c002afc0af82d556b45e87fd403c1e
User & Date: olr on 2018-07-27 08:32:33
Other Links: branch diff | manifest | tags
Context
2018-07-27
08:35
[build] rule parser: exit when wrong syntax check-in: f3f02b6192 user: olr tags: build, rg
08:32
[fr] conversion: regex rules -> graph rules check-in: 070d93f9ad user: olr tags: fr, rg
2018-07-26
11:51
[fr] conversion: regex rules -> graph rules check-in: 663cc65183 user: olr tags: fr, rg
Changes

Modified gc_lang/fr/rules.grx from [e57d770e9f] to [d7105e05ea].

9246
9247
9248
9249
9250
9251
9252
9253



















































































9254
9255
9256

9257
9258
9259
9260
9261
9262
9263
9246
9247
9248
9249
9250
9251
9252
9253
9254
9255
9256
9257
9258
9259
9260
9261
9262
9263
9264
9265
9266
9267
9268
9269
9270
9271
9272
9273
9274
9275
9276
9277
9278
9279
9280
9281
9282
9283
9284
9285
9286
9287
9288
9289
9290
9291
9292
9293
9294
9295
9296
9297
9298
9299
9300
9301
9302
9303
9304
9305
9306
9307
9308
9309
9310
9311
9312
9313
9314
9315
9316
9317
9318
9319
9320
9321
9322
9323
9324
9325
9326
9327
9328
9329
9330
9331
9332
9333
9334
9335
9336
9337
9338

9339
9340
9341
9342
9343
9344
9345
9346








+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+


-
+







TEST: {{Quelle}} homme.                                       ->> Quel
TEST: {{Quel}} femme.                                         ->> Quelle
TEST: {{Quels}} chanson.                                      ->> Quelle
TEST: {{Quelles}} {{tarés}}.
TEST: Quelle sale journée…
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|")
        -1>> \1s                                                                            # Accord de nombre erroné avec “\2”.

__gn_quels_quelles_accord_être__
    [quels|quelles]  [est|étais|était|sera|serais|serait|fut|fût|fus]
        <<- /gn/ not value(<1, "|tels|telles|")
        -1>> =\1[:-1]                                                                       # Accord de nombre erroné avec “\2”.

__gn_quel_accord_être_sujet__
    quel  [est|était|seras|sera|serais|serait|fut|fût|fus]  [la|cette|mon|ton|son|ma|ta|sa|notre|votre|leur]  *WORD
        <<- /gn/ not value(<1, "|tel|telle|") and morph(\4, ":[NAQ].*:f", ":[me]")
        -1>> quelle                                                                         # Accord de genre erroné avec « \3 \4 ».

__gn_quelle_accord_être_sujet__
    quelle  [est|était|seras|sera|serais|serait|fut|fût|fus]  [le|ce|cet|mon|ton|son|notre|votre|leur]  *WORD
        <<- /gn/ not value(<1, "|tel|telle|") and morph(\4, ":[NAQ].*:m", ":[fe]")
        -1>> quel                                                                           # Accord de genre erroné avec « \3 \4 ».

__gn_quels_accord_être_sujet__
    quels  [sont|étaient|seront|serons|seraient|furent|fussent]  [les|ces|mes|tes|ses|nos|vos|leurs]  *WORD
        <<- /gn/ not value(<1, "|tels|telles|") and morph(\4, ":[NAQ].*:f", ":[me]")
        -1>> quelles                                                                        # Accord de genre erroné avec « \3 \4 ».

__gn_quelles_accord_être_sujet__
    quelles  [sont|étaient|seront|serons|seraient|furent|fussent]  [les|ces|mes|tes|ses|nos|vos|leurs]  *WORD
        <<- /gn/ not value(<1, "|tels|telles|") and morph(\4, ":[NAQ].*:m", ":[fe]")
        -1>> quels                                                                          # Accord de genre erroné avec « \3 \4 ».

TEST: {{Quel}} sont ces hommes.                               ->> Quels
TEST: {{Quel}} est cette force ?                              ->> Quelle
TEST: {{Quelle}} est mon animal favori ?                      ->> Quel
TEST: {{Quels}} sont ces femmes ?                             ->> Quelles
TEST: {{Quelles}} est cette imbécillité ?                     ->> Quelle
TEST: {{Quelles}} sont ces hommes ?                           ->> Quels
TEST: Il s’agit de définir quelle est notre propre orientation.



#### Quel(le) que soit …

## masculin requis
__gn_quel_que_être_mas_sing__
    quelle que [soit|soit|sois|soient|fut|fût] [le|ce|cet]      *WORD
    quelle que [soit|soit|sois|soient|fut|fût] [mon|ton|son]    ~^[bcdfgjklmnpqrstvwxz]
        <<- /gn/ -1>> quel                                                                  # Accord de genre avec « \4 \5 ». Utilisez le masculin.

    quelle que [soit|soit|sois|soient|fut|fût] [notre|votre|leur]  *WORD
    quelle que [soit|soit|sois|soient|fut|fût] [mon|ton|son]       ~^[aeéèhiîoôuy]
        <<- /gn/ morph(\5, ":[NA].*:m", ":[fe]") -1>> quel                                  # Accord de genre avec « \4 \5 ». Utilisez le masculin.


__gn_quel_que_être_mas_plur__
    quelles que [soient|furent|fussent] [les|ces|mes|tes|ses|nos|vos|leurs]  @:[NAQ].*:m¬:[fe]
        <<- /gn/ -1>> quels                                                                 # Accord de genre avec « \4 \5 ». Utilisez le masculin.

TEST: {{quelle}} que soit le chien                            ->> quel
TEST: {{Quelle}} que soit mon intérêt.                        ->> Quel
TEST: {{Quelles}} que soient ces intérêts                     ->> Quels
TEST: {{Quelles}} que soient les hommes qui…                  ->> Quels


## féminin requis
__gn_quelle_que_être_fem_sing__
    quel que [soit|soit|sois|fut|fût] [la|cette|ma|ta|sa]  *WORD
        <<- /gn/ -1>> quelle                                                                # Accord de genre avec « \4 \5 ». Utilisez le féminin.

    quel que [soit|soit|sois|soient|fut|fût] [notre|votre|leur]  *WORD
    quel que [soit|soit|sois|soient|fut|fût] [mon|ton|son]       ~^[aeéèhiîoôuy]
        <<- /gn/ morph(\5, ":[NA].*:f", ":[me]") -1>> quelle                                # Accord de genre avec « \4 \5 ». Utilisez le féminin.

__gn_quelle_que_être_fem__
    quels que [soient|furent|fussent] [les|ces|mes|tes|ses|nos|vos|leurs]  @:[NAQ].*:f¬:[me]
        <<- /gn/ -1>> quelles                                                               # Accord de genre avec « \4 \5 ». Utilisez le féminin.

TEST: {{Quel}} que soit la force appliquée.                   ->> Quelle
TEST: {{Quel}} que soit mon aversion                          ->> Quelle
TEST: {{Quel}} que soit cette femme                           ->> Quelle
TEST: {{Quel}} que soit la force appliquée.                   ->> Quelle
TEST: {{Quels}} que soient ces idiotes                        ->> Quelles


## Cas particuliers
__gn_det_plur_cas_particuliers__
    [ces|des|mes|tes|ses|nos|vos|leurs|quelques] [même|point|son|ton]
    [ces|des|mes|tes|ses|nos|vos|leurs|quelques|quels] [même|point|son|ton]
        <<- /gn/ -2>> \1s                                                                   # Accord de nombre erroné : mettez au pluriel.

TEST: des {{son}} que nous entendons jour et nuit.
TEST: j’entends ces {{même}} âneries tous les jours


## Pluriel des groupes
9292
9293
9294
9295
9296
9297
9298
9299
9300
9301
9302
9303
9304
9305
9306
9375
9376
9377
9378
9379
9380
9381

9382
9383
9384
9385
9386
9387
9388







-







TEST: {{Quelques}} 120 hommes                                 ->> Quelque
TEST: {{Quelques}} deux cents hommes.                         ->> Quelque
TEST: les quelque 2,5 millions d’habitants
TEST: les quelque 12 000 stations-service


## Nombres

__gn_nombre_lettres_accord__
    @:B:e:p  *WORD
        <<- /gn/ not value(\1, "|neuf|mille|") and ( (morph(\2, ":[NAQ].*:s", "*") and not value(\2, "|janvier|février|mars|avril|mai|juin|juillet|août|aout|septembre|octobre|novembre|décembre|rue|route|ruelle|place|boulevard|avenue|allée|chemin|sentier|square|impasse|cour|quai|chaussée|côte|vendémiaire|brumaire|frimaire|nivôse|pluviôse|ventôse|germinal|floréal|prairial|messidor|thermidor|fructidor|") )
            or \2 in aREGULARPLURAL)
        -2>> =suggPlur(\2)                                                                  # Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel.

    neuf  *WORD
9331
9332
9333
9334
9335
9336
9337
9338
9339
9340
9341
9342
9343
9344
9345
9346
9347
9348
9349
9350
9351
9352
9353
9354
9355
9356
9357
9358
9359
9360
9361
9362
9363
9364
9365
9366
9367
9368
9369
9370
9371
9372
9373
9374
9375
9376
9377
9378
9379
9380
9381
9382
9383
9384
9385
9386
9387
9388
9389
9390
9391
9392
9393
9394
9395
9396
9397
9398
9399
9400
9401
9402
9403
9404
9405
9406
9407
9408
9409
9410
9411
9412
9413
9414
9415
9416
9417
9418
9419

9420
9421
9422


9423
9424
9425
9426
9427
9428
9429
9430
9431
9432
9433
9434
9435
9436
9437
9438
9439
9440
9441
9442
9443








9444
9445
9446







9447
9448
9449
9450
9451
9452
9453
9413
9414
9415
9416
9417
9418
9419
















































































9420

9421



9422
9423
9424
9425

9426
9427
9428
9429
9430
9431
9432
9433
9434
9435








9436
9437
9438
9439
9440
9441
9442
9443
9444
9445
9446
9447
9448
9449
9450
9451
9452
9453
9454
9455
9456
9457
9458
9459
9460







-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

-
+
-
-
-
+
+


-










-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+



+
+
+
+
+
+
+








TEST: 00 heure, 01 heure
TEST: il a adopté 1 {{chiens}}.
TEST: 22 {{heure}}
TEST: 3 {{heure}}



@@@@
@@@@END_GRAPH                                                                                      _
@@@@


__[i]/gn(gn_quel_quel_accord_être)__
    (quel(?:le|)) (sont|étaient|ser(?:o|aie)nt|fu(?:r|ss)ent)  @@0,$
    <<- not before(r"\btel(?:le|)s? +$")
    -1>> \1s                                                                                        # Accord de nombre erroné avec “\2”.

__[i]/gn(gn_quels_quelles_accord_être)__
    (quel(?:le|)s) (est|étai[ts]|serai?t|f[uû][ts])  @@0,$
    <<- not before(r"\btel(?:le|)s? +$")
    -1>> =\1[:-1]                                                                                   # Accord de nombre erroné avec “\2”.

__[i]/gn(gn_quel_accord_être_sujet)__
    (quel) (?:est|était|sera(?:i[ts]|)|f[uû][ts]) (la|cette|[mts](?:a|on)|[vn]otre) +({w_2})  @@0,w,$
    <<- not before(r"\btel(?:le|)s? +$") and morphex(\3, ":[NAQ].*:f", ":[me]")
    -1>> quelle                                                                                     # Accord de genre erroné avec « \2 \3 ».

__[i]/gn(gn_quelle_accord_être_sujet)__
    (quelle) (?:est|était|sera(?:i[ts]|)|f[uû][ts]) (le|cet?|[mts]on|[vn]otre) +({w_2})  @@0,w,$
    <<- not before(r"\btel(?:le|)s? +$") and morphex(\3, ":[NAQ].*:m", ":[fe]")
    -1>> quel                                                                                       # Accord de genre erroné avec « \2 \3 ».

__[i]/gn(gn_quels_accord_être_sujet)__
    (quels) (?:sont|étaient|ser(?:o|aie)nt|fu(?:r|ss)ent) (les|ces|[mts]es|[vn]os) +({w_2})  @@0,w,$
    <<- not before(r"\btel(?:le|)s? +$") and morphex(\3, ":[NAQ].*:f", ":[me]")
    -1>> quelles                                                                                    # Accord de genre erroné avec « \2 \3 ».

__[i]/gn(gn_quelles_accord_être_sujet)__
    (quelles) (?:sont|étaient|ser(?:o|aie)nt|fu(?:r|ss)ent) (les|ces|[mts]es|[vn]os) +({w_2})  @@0,w,$
    <<- not before(r"\btel(?:le|)s? +$") and morphex(\3, ":[NAQ].*:m", ":[fe]")
    -1>> quels                                                                                      # Accord de genre erroné avec « \2 \3 ».

TEST: {{Quel}} sont ces hommes.                               ->> Quels
TEST: {{Quel}} est cette force ?                              ->> Quelle
TEST: {{Quelle}} est mon animal favori ?                      ->> Quel
TEST: {{Quels}} sont ces femmes ?                             ->> Quelles
TEST: {{Quelles}} est cette imbécillité ?                     ->> Quelle
TEST: {{Quelles}} sont ces hommes ?                           ->> Quels
TEST: Il s’agit de définir quelle est notre propre orientation.


#### Quel(le) que soit …

## masculin requis
__[i]/gn(gn_quel_que_être_mas_sing)__
    (quelle) que ([sf]\w+) +(le|cet?) +({w_2})  @@0,w,w,$
    <<- morph(\2, ":V0e", False)
    -1>> quel                                                                                       # Accord de genre avec « \3 \4 ». Utilisez le masculin.
__[i]/gn(gn_quel_que_être_mas)__
    (quelles?) que ([sf]\w+) +(ces|[mts](?:on|ses)|[nv]o(?:tre|s)|leurs?) +({w_2})  @@0,w,w,$
    <<- morph(\2, ":V0e", False) and morphex(\4, ":[NAQ].*:m", ":[fe]")
    -1>> =\1.replace("lle", "l")                                                                    # Accord de genre avec « \3 \4 ». Utilisez le masculin.

TEST: {{quelle}} que soit le chien                            ->> quel
TEST: {{Quelles}} que soient ces intérêts                     ->> Quels
TEST: {{Quelle}} que soit le truc.                            ->> Quel
TEST: {{Quelle}} que soient les astuces.                      ->> Quelles


## féminin requis
__[i]/gn(gn_quelle_que_être_fem_sing)__
    (quel) que ([sf]\w+) +(la|cette|[mts]a) +({w_2})  @@0,w,w,$
    <<- morph(\2, ":V0e", False)
    -1>> quelle                                                                                     # Accord de genre avec « \3 \4 ». Utilisez le féminin.
__[i]/gn(gn_quelle_que_être_fem)__
    (quels?) que ([sf]\w+) +(ces|[mts](?:on|ses)|[nv]o(?:tre|s)|leurs?) +({w_2})  @@0,w,w,$
    <<- morph(\2, ":V0e", False) and morphex(\4, ":[NAQ].*:f", ":[me]")
    -1>> =\1.replace("l", "lle")                                                                    # Accord de genre avec « \3 \4 ». Utilisez le féminin.

TEST: {{Quels}} que soient ces idiotes                        ->> Quelles
TEST: {{Quel}} que soit mon aversion                          ->> Quelle
TEST: {{Quel}} que soit cette femme                           ->> Quelle
TEST: {{Quels}} que soit la force appliquée.                  ->> Quel
TEST: {{Quel}} que soit la force appliquée.                   ->> Quelle


##  trouver ça/ceci/cela + adj
__[i]/gn(gn_trouver_ça_adj)__
__gn_trouver_ça_adj__
    (trouv\w+) +(ça|ce(?:ci|la)) +({w_2})  @@0,w,$
    <<- morph(\1, ">trouver/", False) and morphex(\3, ":A.*:(?:f|m:p)", ":(?:G|3[sp]|M[12P])")
    -3>> =suggMasSing(@)                                                                            # Trouver \2 + [adjectif] : l’adjectif s’accorde avec “\2” (au masculin singulier).
    >trouver a|cela|ceci]  @:A.*:(?:f|m:p)¬:(?:G|3[sp]|M[12P])
        <<- /gn/ -3>> =suggMasSing(\3)                                              # Trouver \2 + [adjectif] : l’adjectif s’accorde avec “\2” (au masculin singulier).

TEST: ils trouvent ça de plus en plus {{idiots}}              ->> idiot



!!
!!
!!!! Groupe nominal (2)                                                                           !!
!!
!!

## Sans article

__[i]/gn(gn_2m_accord)__
    ^ *({w_2}) +({w_2})  @@*,$
    <<- ((morph(\1, ":[NAQ].*:m") and morph(\2, ":[NAQ].*:f")) or (morph(\1, ":[NAQ].*:f") and morph(\2, ":[NAQ].*:m"))) and not apposition(\1, \2)
    -2>> =switchGender(@)                                                                           # Accord de genre erroné avec « \1 ».
    <<- __also__ and hasFemForm(\1) -1>> =switchGender(@)                                           # Accord de genre erroné avec « \2 ».
    <<- ((morph(\1, ":[NAQ].*:s") and morph(\2, ":[NAQ].*:p")) or (morph(\1, ":[NAQ].*:p") and morph(\2, ":[NAQ].*:s"))) and not apposition(\1, \2)
    -2>> =switchPlural(@)                                                                           # Accord de nombre erroné avec « \1 ».
    <<- __also__ -1>> =switchPlural(@)                                                              # Accord de nombre erroné avec « \2 ».
__gn_2m_accord__
    <start>  @:[NA]¬*  @:[NA]¬*
        <<- /gn/ ((morph(\2, ":m", "*") and morph(\3, ":f", "*")) or (morph(\2, ":f", "*") and morph(\3, ":m", "*"))) and not apposition(\2, \3)
        -3>> =switchGender(\3)                                                                      # Accord de genre erroné avec « \2 ».
        <<- __also__ and hasFemForm(\2) -2>> =switchGender(\2)                                      # Accord de genre erroné avec « \3 ».
        <<- /gn/ ((morph(\2, ":s", "*") and morph(\3, ":p", "*")) or (morph(\2, ":p", "*") and morph(\3, ":s", "*"))) and not apposition(\2, \3)
        -3>> =switchPlural(\3)                                                                      # Accord de nombre erroné avec « \2 ».
        <<- __also__ -2>> =switchPlural(\2)                                                         # Accord de nombre erroné avec « \3 ».

TEST: {{Femmes}} {{intelligente}}.
TEST: {{Homme}} {{impatients}}.


@@@@
@@@@END_GRAPH                                                                                      _
@@@@




## Prépositions

__[i]/gn(gn_2m_pfx_en)__
    en +({w_2}) +({w_2})  @@w,$
    <<- ( (morph(\1, ":[NAQ].*:m") and morph(\2, ":[NAQ].*:f")) or (morph(\1, ":[NAQ].*:f") and morph(\2, ":[NAQ].*:m")) )