Пытаюсь наваять подсветку в своём языке следуя документации: https://docs.kde.org/stable5/en/applications/katepart/highlight.html
Столкнулся с простейшей проблемой, которую ну никак не получается обойти, десятки примеров подсветки для существущих языков прозрения не добавляют.
К примеру, есть синтаксис, для которого написаны контекст и правила:
foo=bar
Такой синтаксис применяется во многих местах, в документации для этого предусмотрен вход/выход в контекст, а также включение существующего правила в текущий контекст. Вот только при выныривании из подобного правила оно может быть применено снова. Как следствие подобные конструкции за ошибку не будут считаться:
foo=bar foo=bar
Хотя по правилам языка между ними должна быть запятая. Можно создать контекст, который будет сначала требовать запятую. Но никак не могу понять, как существующее правило foo=bar должно в него вернуться, ведь единственный предусмотренный способ это #pop.
Есть вариант сделать #pop!my_context_with_leading_coma. Но возвращаемся к нашим баранам — правило foo=bar повторяется в совершенно разных местах, каждый из которых имеет свой синтаксис, то-есть !my_context_with_leading_coma это частный случай и захардкодить его нельзя.
Признавайся, ЛОР, ты занимался раскраской кода в Kate?