В настоящее время я создаю язык с другом, и я хотел бы выделить его в jEdit.
Синтаксис на самом деле довольно прост. Функции могут соответствовать только этому шаблону:
$function_name(arguments)
Обратите внимание, что наш синтаксический анализатор в настоящее время работает без закрывающего тега, такого как полуколонна в стиле C, и мы хотели бы сохранить эту функцию.
Я создал свой режим jEdit и (почти) успешно выделил мой шаблон с помощью <SPAN_REGEXP>
. Вот как я это сделал:
<SPAN_REGEXP HASH_CAR="\$" TYPE="KEYWORD3" DELEGATE="ARGS">
<BEGIN>\$[A-Za_z0-9_]*\s*\(</BEGIN>
<END>)</END>
</SPAN_REGEXP>
Но это не достаточно хорошо.
Вот что я хотел бы:
- Одинаковый цвет для всего скелета функции:
$func( )
- Специальная подсветка (уже определенная в наборе
ARGS
правил) для %content1%
в $func(%content1%)
- Нет подсветки для скобок, не следующих за
$func
- Авторизовать альтернативный многострочный синтаксис, такой как
$func
(
args
)
, который пока не выделен.
Я догадался, что мне нужно изменить <BEGIN>
регулярное выражение для принятия новых строк, но кажется, что jEdit не может сопоставить многострочное регулярное выражение для выделения, хотя он делает это идеально для поиска и замены!
Я пробовал флаги (?s)
и (?m)
, обходной путь [\d\D]*
, даже [\r\n]*
, но он никогда не работает.
Итак, вот мои вопросы:
- Кто-нибудь знает, как сопоставить многострочное регулярное выражение в режимах jEdit
<SPAN_REGEXP>
?
- Если нет, у кого-нибудь есть идеи, как сделать то, что мне нужно?