Выделите пользовательский токен внутри строки в кавычках в редакторе ace

Я потерял так много времени, пытаясь понять это, прочитать несколько статей, но безуспешно.

Я пытаюсь выделить собственный токен внутри строки в кавычках.

Пример:

    Dim code As String = "SELECT G123C432 FROM table WHERE G321C234 = G87C1"

Я импортировал грамматику языка vb.net в туз, и это нормально, но теперь я хочу выделить G123C432, G321C234 а также G87C1,

Файл грамматики vb.net содержит этот токен для строки в кавычках:

    "#quotedString": [{
      token: "string.quoted.double.vbnet",
      regex: /"(?:[^"]|"")*"/
    }]

И я добавил это правило:

    "#mlkField": [{
      token: "mlkfield.vbnet",
      regex: /G[\d]+C[\d]+/
    }]

Я пробовал регулярное выражение G[\d]+C[\d]+ но это не работает, когда находится внутри String,

Пример ожидаемого конечного результата: фрагмент кода

1 ответ

Решение

Использовать отдельное состояние для строки

"#quotedString": [{
    token: "string",
    regex: /"/,
    push: [{
        token: "mlkfield.vbnet",
        regex: /G[\d]+C[\d]+/
    }, {
        token: "string",
        regex: /"/,
        next: "pop"
    }, {
        defaultToken: "string"
    }]
}]
Другие вопросы по тегам