Я пытаюсь понять, как я должен реализовать подсветку синтаксиса в реальном времени при обработке очень большой строки. Я очень запутался. Вот что я знаю:
(Предположим, у меня есть функция parsedString parseString (rawString)
)
Вызов parseString (completeText)
и заменяет текущую строку возвращенной проанализированной (и стилизованной) и т. Д. ) при каждом изменении текста. Это кажется плохим подходом при работе с большими данными.
Кто-то предложил проанализировать отредактированный диапазон и заменить текущую необработанную отредактированную строку проанализированной строкой parseString (editedRange)
.
Метод (1) достаточно ясно. Я не могу понять (2). При вводе для каждого символа, добавленного в строку, запускается уведомление, и один символ анализируется (и возвращается как есть).
Например, если мне нужны красные селекторы при разборе файла .css, как я могу понять, когда за завершенным селектором следует {
, который нужно раскрасить? Я полагаю, есть способ отложить синтаксический анализ до тех пор, пока не будет найдено совпадение. Как это реализовать?
Я не ищу рабочее приложение. Также было бы полезно хорошее объяснение.
Заранее благодарю.