Overview
Comment: | [core][js] gc engine: fix several issues |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | core | rg |
Files: | files | file ages | folders |
SHA3-256: |
a75b859e725e130458655bbf84e2c675 |
User & Date: | olr on 2018-09-11 21:20:48 |
Other Links: | branch diff | manifest | tags |
Context
2018-09-12
| ||
07:58 | [core][js] gc engine: fix several issues check-in: b4074ae3b3 user: olr tags: core, rg | |
2018-09-11
| ||
21:20 | [core][js] gc engine: fix several issues check-in: a75b859e72 user: olr tags: core, rg | |
20:50 | [core][js] gc engine: fix several issues check-in: 19fa3fc573 user: olr tags: core, rg | |
Changes
Modified gc_core/js/lang_core/gc_engine.js from [efd2e8524d] to [ab940d7e96].
︙ | ︙ | |||
522 523 524 525 526 527 528 | } if (!bTokenFound && dPointer.hasOwnProperty("bKeep")) { yield dPointer; } // JUMP // Warning! Recurssion! if (dNode.hasOwnProperty("<>")) { | | | 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 | } if (!bTokenFound && dPointer.hasOwnProperty("bKeep")) { yield dPointer; } // JUMP // Warning! Recurssion! if (dNode.hasOwnProperty("<>")) { let dPointer2 = { "iNode1": iNode1, "dNode": dGraph[dNode["<>"]], "bKeep": true }; yield* this._getNextPointers(dToken, dGraph, dPointer2, bDebug); } } catch (e) { console.error(e); } } |
︙ | ︙ | |||
602 603 604 605 606 607 608 | let nTokenErrorEnd = (iTokenEnd > 0) ? nTokenOffset + iTokenEnd : nLastToken + iTokenEnd; let nErrorStart = this.nOffsetWithinParagraph + ((cStartLimit == "<") ? this.lToken[nTokenErrorStart]["nStart"] : this.lToken[nTokenErrorStart]["nEnd"]); let nErrorEnd = this.nOffsetWithinParagraph + ((cEndLimit == ">") ? this.lToken[nTokenErrorEnd]["nEnd"] : this.lToken[nTokenErrorEnd]["nStart"]); if (!this.dError.has(nErrorStart) || nPriority > this.dErrorPriority.get(nErrorStart, -1)) { this.dError[nErrorStart] = this._createErrorFromTokens(sWhat, nTokenOffset, nLastToken, nTokenErrorStart, nErrorStart, nErrorEnd, sLineId, sRuleId, bCaseSvty, sMessage, sURL, bShowRuleId, sOption, bContext); this.dErrorPriority[nErrorStart] = nPriority; if (bDebug) { | | | | | | | | | | | | | 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 | let nTokenErrorEnd = (iTokenEnd > 0) ? nTokenOffset + iTokenEnd : nLastToken + iTokenEnd; let nErrorStart = this.nOffsetWithinParagraph + ((cStartLimit == "<") ? this.lToken[nTokenErrorStart]["nStart"] : this.lToken[nTokenErrorStart]["nEnd"]); let nErrorEnd = this.nOffsetWithinParagraph + ((cEndLimit == ">") ? this.lToken[nTokenErrorEnd]["nEnd"] : this.lToken[nTokenErrorEnd]["nStart"]); if (!this.dError.has(nErrorStart) || nPriority > this.dErrorPriority.get(nErrorStart, -1)) { this.dError[nErrorStart] = this._createErrorFromTokens(sWhat, nTokenOffset, nLastToken, nTokenErrorStart, nErrorStart, nErrorEnd, sLineId, sRuleId, bCaseSvty, sMessage, sURL, bShowRuleId, sOption, bContext); this.dErrorPriority[nErrorStart] = nPriority; if (bDebug) { console.log(` NEW_ERROR: ${sRuleId} ${sLineId}: ${this.dError[nErrorStart]}`); } } } } else if (cActionType == "~") { // text processor let nTokenStart = (eAct[0] > 0) ? nTokenOffset + eAct[0] : nLastToken + eAct[0]; let nTokenEnd = (eAct[1] > 0) ? nTokenOffset + eAct[1] : nLastToken + eAct[1]; this._tagAndPrepareTokenForRewriting(sWhat, nTokenStart, nTokenEnd, nTokenOffset, nLastToken, eAct[2], bDebug); bChange = true; if (bDebug) { console.log(` TEXT_PROCESSOR: ${sRuleId} ${sLineId}`); console.log(` ${this.lToken[nTokenStart]["sValue"]} : ${this.lToken[nTokenEnd]["sValue"]} > ${sWhat}`); } } else if (cActionType == "=") { // disambiguation oEvalFunc[sWhat](this.lToken, nTokenOffset, nLastToken); if (bDebug) { console.log(` DISAMBIGUATOR: ${sRuleId} ${sLineId} (${sWhat}) ${this.lToken[nTokenOffset+1]["sValue"]}:${this.lToken[nLastToken]["sValue"]}`); } } else if (cActionType == ">") { // we do nothing, this test is just a condition to apply all following actions if (bDebug) { console.log(` COND_OK: ${sRuleId} ${sLineId}`); } } else if (cActionType == "/") { // Tag let nTokenStart = (eAct[0] > 0) ? nTokenOffset + eAct[0] : nLastToken + eAct[0]; let nTokenEnd = (eAct[1] > 0) ? nTokenOffset + eAct[1] : nLastToken + eAct[1]; for (let i = nTokenStart; i <= nTokenEnd; i++) { if (this.lToken[i].hasOwnProperty("tags")) { this.lToken[i]["tags"].add(...sWhat.split("|")) } else { this.lToken[i]["tags"] = new Set(sWhat.split("|")); } } if (bDebug) { console.log(` TAG: ${sRuleId} ${sLineId}`); console.log(` ${sWhat} > ${this.lToken[nTokenStart]["sValue"]} : ${this.lToken[nTokenEnd]["sValue"]}`); } 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])]); } } else if (cActionType == "%") { // immunity if (bDebug) { console.log(" IMMUNITY:\n " + _rules_graph.dRule[sRuleId]); } nTokenStart = (eAct[0] > 0) ? nTokenOffset + eAct[0] : nLastToken + eAct[0]; nTokenEnd = (eAct[1] > 0) ? nTokenOffset + eAct[1] : nLastToken + eAct[1]; if (nTokenEnd - nTokenStart == 0) { this.lToken[nTokenStart]["bImmune"] = true; let nErrorStart = this.nOffsetWithinParagraph + this.lToken[nTokenStart]["nStart"]; if (this.dError.has(nErrorStart)) { this.dError.delete(nErrorStart); } } else { for (let i = nTokenStart; i <= nTokenEnd; i++) { this.lToken[i]["bImmune"] = true; let nErrorStart = this.nOffsetWithinParagraph + this.lToken[i]["nStart"]; if (this.dError.has(nErrorStart)) { this.dError.delete(nErrorStart); } } } } else { console.log("# error: unknown action at " + sLineId); } } else if (cActionType == ">") { if (bDebug) { console.log(` COND_BREAK: ${sRuleId} ${sLineId}`); } break; } } } catch (e) { console.log("Error: ", sLineId, sRuleId, this.sSentence); |
︙ | ︙ | |||
731 732 733 734 735 736 737 | sSugg = oEvalFunc[sSugg.slice(1)](this.lToken, nTokenOffset, nLastToken); lSugg = (sSugg) ? sSugg.split("|") : []; } else if (sSugg == "_") { lSugg = []; } else { lSugg = this._expand(sSugg, nTokenOffset, nLastToken).split("|"); } | | | 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 | sSugg = oEvalFunc[sSugg.slice(1)](this.lToken, nTokenOffset, nLastToken); lSugg = (sSugg) ? sSugg.split("|") : []; } else if (sSugg == "_") { lSugg = []; } else { lSugg = this._expand(sSugg, nTokenOffset, nLastToken).split("|"); } if (bCaseSvty && lSugg.length > 0 && this.lToken[iFirstToken]["sValue"].slice(0,1).gl_isUpperCase()) { lSugg = capitalizeArray(lSugg); } // Message let sMessage = (sMsg.startsWith("=")) ? oEvalFunc[sMsg.slice(1)](this.lToken, nTokenOffset, nLastToken) : this._expand(sMsg, nTokenOffset, nLastToken); if (bShowRuleId) { sMessage += " ## " + sLineId + " # " + sRuleId; } |
︙ | ︙ | |||
836 837 838 839 840 841 842 | } else { if (sWhat.startsWith("=")) { sWhat = oEvalFunc[sWhat.slice(1)](this.lToken, nTokenOffset, nLastToken); } else { sWhat = this._expand(sWhat, nTokenOffset, nLastToken); } | | | 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 | } else { if (sWhat.startsWith("=")) { sWhat = oEvalFunc[sWhat.slice(1)](this.lToken, nTokenOffset, nLastToken); } else { sWhat = this._expand(sWhat, nTokenOffset, nLastToken); } let bUppercase = bCaseSvty && this.lToken[nTokenRewriteStart]["sValue"].slice(0,1).gl_isUpperCase(); if (nTokenRewriteEnd - nTokenRewriteStart == 0) { // one token if (bUppercase) { sWhat = sWhat.gl_toCapitalize(); } this.lToken[nTokenRewriteStart]["sNewValue"] = sWhat; } |
︙ | ︙ | |||
933 934 935 936 937 938 939 | console.log(dToken); } } } if (bDebug) { console.log(" TEXT REWRITED: " + this.sSentence); } | | < | 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 | console.log(dToken); } } } if (bDebug) { console.log(" TEXT REWRITED: " + this.sSentence); } this.lToken.length = 0; this.lToken = lNewToken; } }; //////// Common functions function option (sOpt) { // return true if option sOpt is active |
︙ | ︙ |