Урок На Вечер: Написание Подсветки Синтаксиса

Недавно я заинтересовался тем, как работает подсветка кода изнутри.

Сначала казалось, что все дико сложно — синтаксическое дерево, рекурсия и все.

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

Демо-страница: Выделение кода Javascript



Основная идея

Объявить переменную состояние , в котором будет храниться информация о том, в какой части кода мы находимся.

Если, например, состояние равен единице, то это означает, что мы находимся внутри строки, заключенной в одинарные кавычки.

Скрипт будет ждать закрывающую кавычку и игнорировать все остальное.

То же самое и с подсветкой комментариев, регулярных выражений и других элементов, каждый из которых имеет свое значение.

состояние .

Таким образом, разные открывающие и закрывающие символы не будут конфликтовать; другими словами, код такой:

  
   

let a = '"\'"';

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



Начало работы

Определяем возможные значения переменной состояния, а также цвет, в который будет окрашена та или иная часть кода, а также список ключевых слов Javascript (которые также будут подсвечены): константные состояния = {.



const states = {

Теги: #JavaScript #js #highlighting #подсветка синтаксиса #syntax #highlight #highlighter #highlighting #highlighter

Вместе с данным постом часто просматривают: