Javascript CodeMirror中的嵌套组

Javascript CodeMirror中的嵌套组,javascript,codemirror,codemirror-modes,Javascript,Codemirror,Codemirror Modes,我正在尝试为Minecraft样式编写一个模式 我想进行组嵌套,其中以§开头的所有内容都被设置为一直到行尾的样式 (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" &&

我正在尝试为Minecraft样式编写一个模式

我想进行组嵌套,其中以§开头的所有内容都被设置为一直到行尾的样式

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

    CodeMirror.defineMode("minecraft", function() {
        var g= 0;

        var tokenBase = function(stream, state) {
            var ch = stream.next();

            if ( ch === "§" ) {
                const nxt = stream.next();
                stream.skipToEnd();
                return "§" + nxt;
            }

            stream.next();
            return null;
        };

        return {
            startState: base => {
                g = 0;
            },
            token: tokenBase
        };
    });

    CodeMirror.defineMIME("text/plain", "minecraft");
});
§7$1\(§l§3$0\)

将成为

<span class="cm-§7"> // gray text
  §7 $1 \(
  <span class="cm-§l"> //Bold text
    <span class="cm-§3">§3$0\)</span> // Dark_Aqua text
  </span>
</span>
到目前为止,对于我的
mode/minecraft/minecraft.js
我有以下内容,其中仅将第一个§的样式设置为行末

(function(mod) {
  if (typeof exports == "object" && typeof module == "object") // CommonJS
    mod(require("../../lib/codemirror"));
  else if (typeof define == "function" && define.amd) // AMD
    define(["../../lib/codemirror"], mod);
  else // Plain browser env
    mod(CodeMirror);
})(function(CodeMirror) {
"use strict";

    CodeMirror.defineMode("minecraft", function() {
        var g= 0;

        var tokenBase = function(stream, state) {
            var ch = stream.next();

            if ( ch === "§" ) {
                const nxt = stream.next();
                stream.skipToEnd();
                return "§" + nxt;
            }

            stream.next();
            return null;
        };

        return {
            startState: base => {
                g = 0;
            },
            token: tokenBase
        };
    });

    CodeMirror.defineMIME("text/plain", "minecraft");
});
有人知道我如何才能做到这一点吗

提前谢谢


~MRVDOG

我不确定到底是什么问题,你能给我们举个错误的例子吗。问题是它只是对第一个选择进行分组,我希望它嵌套在另一个选择中,这样我就可以正确地设置线条文本的样式。我手动编辑了这个,以显示我想要完成的任务。。。这就是我想要的结构,这就是我想要的最终形式(没有轮廓)