Теория синтаксического анализа и подсветка синтаксиса в реальном времени

Я пытаюсь понять, как я должен реализовать подсветку синтаксиса в реальном времени при обработке очень большой строки. Я очень запутался. Вот что я знаю:

(Предположим, у меня есть функция parsedString parseString (rawString) )

  1. Вызов parseString (completeText) и заменяет текущую строку возвращенной проанализированной (и стилизованной) и т. Д. ) при каждом изменении текста. Это кажется плохим подходом при работе с большими данными.

  2. Кто-то предложил проанализировать отредактированный диапазон и заменить текущую необработанную отредактированную строку проанализированной строкой parseString (editedRange) .

Метод (1) достаточно ясно. Я не могу понять (2). При вводе для каждого символа, добавленного в строку, запускается уведомление, и один символ анализируется (и возвращается как есть).

Например, если мне нужны красные селекторы при разборе файла .css, как я могу понять, когда за завершенным селектором следует {, который нужно раскрасить? Я полагаю, есть способ отложить синтаксический анализ до тех пор, пока не будет найдено совпадение. Как это реализовать?

Я не ищу рабочее приложение. Также было бы полезно хорошее объяснение.

Заранее благодарю.

15
задан Donovan 22 May 2011 в 13:07
поделиться