Выделите пользовательский токен внутри строки в кавычках в редакторе 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"
}]
}]