LINUX.ORG.RU

История изменений

Исправление object, (текущая версия) :

Лексер вполне себе может, и в современых языках является, контекстно-зависимым. Иначе ты просто не разобьешь на лексемы синтаксисы современных языков.

Для подсветки синтаксиса достаточно только потока токенов, а ast дерево, являющееся продуктом работы парсера нужно для всех прочих фич - таких как автодополнение, семантический анализ кода и прочее.

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

Большинство редакторов кода избегают использование/разработку инкрементальных лексеров, а просто прибегают к различным хакам.

Исходная версия object, :

Лексер вполне себе может, и в современых языках является, контекстно-зависимым. Иначе ты просто не разобьешь на лексемы синтаксисы современных языков.

Для подсветки синтаксиса достаточно только потока токенов, а ast дерево, являющееся продуктом работы парсера нужно для всех прочих фич - таких как автодополнение, семантический анализ кода и прочее.

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

Большинство релакторов кода избегают использование инкрементальных лексеров, а просто прибегают к различным хакам.