Grammalecte  Check-in [2f5ece5979]

Overview
Comment:[core] gc engine: fix multi-tagging
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk | core
Files: files | file ages | folders
SHA3-256: 2f5ece59791db02e7af1d488f00fb158b29e8d1cefcca8da83026bb5d1ac1253
User & Date: olr on 2020-04-11 19:24:19
Other Links: manifest | tags
Context
2020-04-11
20:06
[fr] ajustements et faux positifs check-in: c52a115673 user: olr tags: trunk, fr
19:24
[core] gc engine: fix multi-tagging check-in: 2f5ece5979 user: olr tags: trunk, core
12:05
[fr] nr: confusion pore/porc/port, +ajustements check-in: 316510641b user: olr tags: trunk, fr
Changes

Modified gc_core/js/lang_core/gc_engine.js from [224c579d52] to [93de934b15].

731
732
733
734
735
736
737

738
739
740
741





742
743
744
745
746
747
748
731
732
733
734
735
736
737
738




739
740
741
742
743
744
745
746
747
748
749
750







+
-
-
-
-
+
+
+
+
+







                                    } else {
                                        this.lToken[i]["aTags"] = new Set(sWhat.split("|"));
                                    }
                                }
                                if (bDebug) {
                                    console.log(`    TAG:  ${sWhat} > [${this.lToken[nTokenStart]["sValue"]}:${this.lToken[nTokenEnd]["sValue"]}]`);
                                }
                                for (let sTag of sWhat.split("|")) {
                                if (!this.dTags.has(sWhat)) {
                                    this.dTags.set(sWhat, [nTokenStart, nTokenStart]);
                                } else {
                                    this.dTags.set(sWhat, [Math.min(nTokenStart, this.dTags.get(sWhat)[0]), Math.max(nTokenEnd, this.dTags.get(sWhat)[1])]);
                                    if (!this.dTags.has(sTag)) {
                                        this.dTags.set(sTag, [nTokenStart, nTokenEnd]);
                                    } else {
                                        this.dTags.set(sTag, [Math.min(nTokenStart, this.dTags.get(sTag)[0]), Math.max(nTokenEnd, this.dTags.get(sTag)[1])]);
                                    }
                                }
                            }
                            else if (cActionType == "!") {
                                // immunity
                                if (bDebug) {
                                    console.log("    IMMUNITY: " + sLineId + " / " + sRuleId);
                                }

Modified gc_core/py/lang_core/gc_engine.py from [c796a47a03] to [612611c197].

635
636
637
638
639
640
641

642
643
644
645
646





647
648
649
650
651
652
653
635
636
637
638
639
640
641
642





643
644
645
646
647
648
649
650
651
652
653
654







+
-
-
-
-
-
+
+
+
+
+







                                for i in range(nTokenStart, nTokenEnd+1):
                                    if "aTags" in self.lToken[i]:
                                        self.lToken[i]["aTags"].update(sWhat.split("|"))
                                    else:
                                        self.lToken[i]["aTags"] = set(sWhat.split("|"))
                                if bDebug:
                                    echo("    TAG: {} >  [{}:{}]".format(sWhat, self.lToken[nTokenStart]["sValue"], self.lToken[nTokenEnd]["sValue"]))
                                for sTag in sWhat.split("|"):
                                if sWhat not in self.dTags:
                                    self.dTags[sWhat] = [nTokenStart, nTokenStart]
                                else:
                                    self.dTags[sWhat][0] = min(nTokenStart, self.dTags[sWhat][0])
                                    self.dTags[sWhat][1] = max(nTokenEnd, self.dTags[sWhat][1])
                                    if sTag not in self.dTags:
                                        self.dTags[sTag] = [nTokenStart, nTokenEnd]
                                    else:
                                        self.dTags[sTag][0] = min(nTokenStart, self.dTags[sTag][0])
                                        self.dTags[sTag][1] = max(nTokenEnd, self.dTags[sTag][1])
                            elif cActionType == "!":
                                # immunity
                                if bDebug:
                                    echo("    IMMUNITY: " + sLineId + " / " + sRuleId)
                                nTokenStart = nTokenOffset + eAct[0]  if eAct[0] > 0  else nLastToken + eAct[0]
                                nTokenEnd = nTokenOffset + eAct[1]  if eAct[1] > 0  else nLastToken + eAct[1]
                                if nTokenEnd - nTokenStart == 0: