Мы все знаем, что разбор HTML с использованием регулярных выражений вообще невозможен, поскольку он будет анализировать контекстно-зависимую грамматику, в то время как регулярные выражения могут анализировать только обычные грамматики. То же самое верно для других языков программирования.
Теперь, недавно, было объявлено Rainbow.js синтаксис highlighter. Его посылка описана как очень простая:
Радуга сама по себе очень проста. Он проходит через блоки кода, обрабатывает шаблоны регулярных выражений и обматывает соответствующие шаблоны в тегах.
Я понял, что подсветка синтаксиса - это, по сути, задача с той же сложностью, что и разбор языка, если мы предполагаем, что она должна быть хорошей и подходящей для многих языков. Тем не менее, в то время как в этой библиотеке есть довольно много критики, ни то, ни другое Обсуждение HackerNews (принятое в качестве примера для обсуждения с технической точки зрения) отметили, что подсветка синтаксиса с использованием регулярных выражений в общем случае невозможна в общем случае, что я бы назвал основным недостатком шоу-остановки.
Теперь возникает вопрос: есть ли что-то, что мне не хватает? В частности:
- Возможно ли подсветка синтаксиса с регулярными выражениями?
- Является ли это экземпляром применяемого правила 80/20, где достаточно, чтобы регулярные выражения могли быть полезными?