Grammalecte  Check-in [99d73d5fde]

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: 99d73d5fdefce2f7f34fe5db7cdc16ccb101cb8b2564326b631070d0b20fabce
User & Date: olr on 2018-07-27 09:37:27
Other Links: branch diff | manifest | tags
Context
2018-07-27
18:11
[fr] conversion: regex rules -> graph rules check-in: ebc7b7f342 user: olr tags: fr, rg
09:37
[fr] conversion: regex rules -> graph rules check-in: 99d73d5fde user: olr tags: fr, rg
08:35
[build] rule parser: exit when wrong syntax check-in: f3f02b6192 user: olr tags: build, rg
Changes

Modified gc_lang/fr/rules.grx from [0a4581811d] to [7c180bd845].

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
9461
9462
9463
9464
9465
9466
9467
9468
9469
9470
9471
9472
9473
9474
9475
9476
9477
9478
9479
9480
9481
9482
9483
9484
9485
9486
9487
9488
9489
9490
9491
9492
9493
!!
!!
!!!! Groupe nominal (2)                                                                           !!
!!
!!

## Sans article

__[i]/gn(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")) )
        and not apposition(\1, \2) and morph(word(-1), ":[VRX]", True, True)
    -2>> =switchGender(@)                                                                           # Accord de genre erroné avec « \1 ».
    <<- __also__ and hasFemForm(\1) -1>> =switchGender(@)                                           # Accord de genre erroné avec « \2 ».
    <<- ( (morph(\1, ":[NAQ].*:p") and morph(\2, ":[NAQ].*:s")) or (morph(\1, ":[NAQ].*:s") and morph(\2, ":[NAQ].*:p")) )
        and not apposition(\1, \2) and morph(word(-1), ":[VRX]", True, True)
    -2>> =switchPlural(@)                                                                           # Accord de nombre erroné avec « \1 ».
    <<- __also__ -1>> =switchPlural(@)                                                              # Accord de nombre erroné avec « \2 ».

TEST: en homme {{courtoise}}
TEST: en {{femme}} {{cultivées}}


__[i]/gn(gn_2m_pfx_à_par_pour_sans)__
    (?:à|par|pour|sans) +({w_2}) +({w_2})  @@w,$
    <<- ( (morphex(\1, ":[NAQ].*:m", ":[GYfe]") and morph(\2, ":[NAQ].*:f")) or (morphex(\1, ":[NAQ].*:f", ":[GYme]") and morph(\2, ":[NAQ].*:m")) )
        and not apposition(\1, \2) and morph(word(-1), ":[VRX]", True, True)
    -2>> =switchGender(@)                                                                           # Accord de genre erroné avec « \1 ».
    <<- __also__ and hasFemForm(\1) -1>> =switchGender(@)                                           # Accord de genre erroné avec « \2 ».
    <<- ( (morphex(\1, ":[NAQ].*:p", ":[GYsi]") and morph(\2, ":[NAQ].*:s")) or (morphex(\1, ":[NAQ].*:s", ":[GYpi]") and morph(\2, ":[NAQ].*:p")) )
        and not apposition(\1, \2) and morph(word(-1), ":[VRX]", True, True)
    -2>> =switchPlural(@)                                                                           # Accord de nombre erroné avec « \1 ».
    <<- __also__ -1>> =switchPlural(@)                                                              # Accord de nombre erroné avec « \2 ».

TEST: à {{grande}} {{enjambées}}
TEST: pour {{belle}} {{appartement}}


__[i]/gn(gn_2m_pfx_de_sur_avec_après)__
    (?:de|sur|avec|après) +({w_2}) +({w_2})  @@w,$
    <<- ( (morphex(\1, ":[NAQ].*:m", ":(?:[Gfe]|V0e|Y)") and morph(\2, ":[NAQ].*:f")) or (morphex(\1, ":[NAQ].*:f", ":(?:[Gme]|V0e|Y)") and morph(\2, ":[NAQ].*:m")) )
        and not apposition(\1, \2) and morph(word(-1), ":[VRX]", True, True)
    -2>> =switchGender(@)                                                                           # Accord de genre erroné avec « \1 ».
    <<- __also__ and hasFemForm(\1) -1>> =switchGender(@)                                           # Accord de genre erroné avec « \2 ».







<
|



|


|




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






<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







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
9461
9462
9463
9464
9465
9466
9467
9468
9469
9470
9471
9472
9473
9474
9475
9476
9477
9478
9479

































9480
9481
9482
9483
9484
9485
9486
!!
!!
!!!! Groupe nominal (2)                                                                           !!
!!
!!

## Sans article

__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 ».
        <<- /gn/ __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 ».
        <<- /gn/ __also__ -2>> =switchPlural(\2)                                                    # Accord de nombre erroné avec « \3 ».

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


## Prépositions
__gn_2m_pfx_en__
    en  @:[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 ».
        <<- /gn/ __also__ and hasFemForm(\2) -2>> =switchGender(\2)                                 # Accord de genre erroné avec « \3 ».
        <<- /gn/ ( (morph(\2, ":p", "*") and morph(\3, ":s", "*")) or (morph(\2, ":s", "*") and morph(\3, ":p", "*")) ) and not apposition(\2, \3)
        -3>> =switchPlural(\3)                                                                      # Accord de nombre erroné avec « \2 ».
        <<- /gn/ __also__ -2>> =switchPlural(\2)                                                    # Accord de nombre erroné avec « \3 ».

TEST: en homme {{courtoise}}
TEST: en {{femme}} {{cultivées}}

__gn_2m_pfx_à_par_pour_sans__
    [à|par|pour|sans]  @:[NA]¬:Y  @:[NA]
        <<- /gn/ ( (morph(\2, ":m", ":[fe]") and morph(\3, ":f", "*")) or (morph(\2, ":f", ":[me]") and morph(\3, ":m", "*")) ) and not apposition(\2, \3)
        -3>> =switchGender(\3)                                                                      # Accord de genre erroné avec « \2 ».
        <<- /gn/ __also__ and hasFemForm(\2) -2>> =switchGender(\2)                                 # Accord de genre erroné avec « \3 ».
        <<- /gn/ ( (morph(\2, ":p", ":[si]") and morph(\3, ":s", "*")) or (morph(\2, ":s", ":[pi]") and morph(\3, ":p", "*")) ) and not apposition(\2, \3)
        -3>> =switchPlural(\3)                                                                      # Accord de nombre erroné avec « \2 ».
        <<- /gn/ __also__ -2>> =switchPlural(\2)                                                    # Accord de nombre erroné avec « \3 ».

TEST: à {{grande}} {{enjambées}}
TEST: pour {{belle}} {{appartement}}
TEST: une femme sans a priori


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




































__[i]/gn(gn_2m_pfx_de_sur_avec_après)__
    (?:de|sur|avec|après) +({w_2}) +({w_2})  @@w,$
    <<- ( (morphex(\1, ":[NAQ].*:m", ":(?:[Gfe]|V0e|Y)") and morph(\2, ":[NAQ].*:f")) or (morphex(\1, ":[NAQ].*:f", ":(?:[Gme]|V0e|Y)") and morph(\2, ":[NAQ].*:m")) )
        and not apposition(\1, \2) and morph(word(-1), ":[VRX]", True, True)
    -2>> =switchGender(@)                                                                           # Accord de genre erroné avec « \1 ».
    <<- __also__ and hasFemForm(\1) -1>> =switchGender(@)                                           # Accord de genre erroné avec « \2 ».