Grammalecte  Check-in [2403b60204]

Overview
Comment:[core] test existence of negative pattern before checking token
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | core | rg
Files: files | file ages | folders
SHA3-256: 2403b602048c13199b1d4c126fd25883fccbabb62e06fde1b3bc22085e48416a
User & Date: olr on 2018-06-22 17:33:11
Other Links: branch diff | manifest | tags
Context
2018-06-22
19:36
[build] rules parser: multilines actions check-in: 5f4a861816 user: olr tags: build, rg
17:33
[core] test existence of negative pattern before checking token check-in: 2403b60204 user: olr tags: core, rg
17:24
[fr] étiquetage des pronoms pour détection des verbes isolés mal conjugués check-in: 420a991f44 user: olr tags: fr, rg
Changes

Modified gc_core/py/lang_core/gc_engine.py from [8a69397483] to [97f5a67ddc].

645
646
647
648
649
650
651
652

653
654
655
656
657
658
659
645
646
647
648
649
650
651

652
653
654
655
656
657
658
659







-
+







                            print("  MATCH: ~" + sRegex)
                        yield dGraph[dNode["<re_value>"][sRegex]]
                else:
                    # there is an anti-pattern
                    sPattern, sNegPattern = sRegex.split("¬", 1)
                    if sNegPattern and re.search(sNegPattern, dToken["sValue"]):
                        continue
                    if re.search(sPattern, dToken["sValue"]):
                    if not sPattern or re.search(sPattern, dToken["sValue"]):
                        if bDebug:
                            print("  MATCH: ~" + sRegex)
                        yield dGraph[dNode["<re_value>"][sRegex]]
        # regex morph arcs
        if "<re_morph>" in dNode:
            for sRegex in dNode["<re_morph>"]:
                if "¬" not in sRegex:
670
671
672
673
674
675
676
677

678
679
680
681
682
683
684
670
671
672
673
674
675
676

677
678
679
680
681
682
683
684







-
+







                        if sPattern and all(re.search(sPattern, sMorph)  for sMorph in _oSpellChecker.getMorph(dToken["sValue"])):
                            if bDebug:
                                print("  MATCH: @" + sRegex)
                            yield dGraph[dNode["<re_morph>"][sRegex]]
                    else:
                        if sNegPattern and any(re.search(sNegPattern, sMorph)  for sMorph in _oSpellChecker.getMorph(dToken["sValue"])):
                            continue
                        if any(re.search(sPattern, sMorph)  for sMorph in _oSpellChecker.getMorph(dToken["sValue"])):
                        if not sPattern or any(re.search(sPattern, sMorph)  for sMorph in _oSpellChecker.getMorph(dToken["sValue"])):
                            if bDebug:
                                print("  MATCH: @" + sRegex)
                            yield dGraph[dNode["<re_morph>"][sRegex]]

    def parse (self, dGraph, dPriority, sCountry="${country_default}", dOptions=None, bShowRuleId=False, bDebug=False, bContext=False):
        dErr = {}
        dPriority = {}  # Key = position; value = priority