Во многих языках программирования можно писать код прямо в блокноте. Мы так в школе на Java писали. Делаешь отступы и переносы, всё понятно.
SPARD же ближе не к традиционным языками программирования, а к языку регулярных выражений. Он за счёт краткости синтаксиса обеспечивает высокую плотность корректных программ. К примеру, если потребовать только того, что программа будет состоять из одной строки и в ней обязательно должна быть конструкция "=>", а все остальные символы в строке мы будем генерить случайным образом, то мы получим скорее корректную программу на SPARD, чем некорректную. В каком ещё языке такое возможно?
Краткость - сестра таланта, но внучатая племянница понятности. Из-за компактных программ страдает читабельность исходного кода. Компактность даёт нам возможности быстрого разбора программы и высокой скорости её написания. Декларативный язык позволяет нам не заботиться о том, как вычислить результат; мы прямо пишем, что именно мы хотим получить. Поэтому не хотелось бы отказывать от сжатости, но при этом желательно повысить читабельность кода.
Помочь в этом в состоянии лишь полноценный редактор SPARD, который будет подсвечивать различные элементы кода. Попытки привлечь к решению этой задачи Notepad++ особых успехом не увенчались. Да, стало получше, но Notepad++, объединяя пару скобок, не понимает, что в SPARD'е скобка может быть экранирована при помощи апострофа (') и должна в этом случае трактоваться как обычный символ. Из-за этого едет всё оформление.
Путей создания редактора как всегда несколько:
1. Интеграция с Visual Studio 2012. Из коробки: открытие и сохранение файлов, Undo/Redo, запуск интерпретатора и прочие радости жизни. Минус: надо разобраться (не очень существенный) и только Windows 7/8 (уже похуже).
2. Своя программа: всю логику по работе с файлами надо писать самостоятельно. Опять же Windows-only. Трудоёмко, но при этом работает и на Windows XP.
3. Развивать редактор на веб-сайте. Кроссплатформенно, но тяжеловато. Парсера SPARD на JavaScript у меня пока нет, а это означает, что всё должно обрабатываться на сервере. Нагрузка как-никак. Но теоретически реально.
Я ещё подумаю, какой вариант предпочесть.
Теперь о самой подсветке. Это единственный способ выделить в потоке кода на SPARD разнородные элементы. Важно учесть следующее:
1) выделить элементы контента (буквы входного текста). Это самое важное, эти элементы описывают скелет входных данных. Желательно выделять жирным;
2) служебные элементы (скобки и пр.), наоборот, сделать серыми. Они не должны отвлекать от кода;
3) внутри инструкций особый синтаксис. Но там может быть и разная подсветка. Поэтому логично выделить инструкции радикально - сделать их курсивными;
4) выделять имена множеств. Они значимы.
Смотрим примеры.
Пример с сайта - регулярное выражение для эмейлов:
Без подсветки:
[Email=]((a-z)+"@"(a-z)+"."(a-z)#2-3) => "mail: "[Email]
С подсветкой:
[Email=]((a-z)+"@"(a-z)+"."(a-z)#2-3) => "mail: "[Email]
Уже видно, из чего состоит Email.
Вот пример из реальной программы на SPARD.
Без подсветки:
:= (
do'=', enddo [V = @(union, V1, V2, V3, {name:Id})]
= "(do "' ' '
@(tab, [L])')
)
С подсветкой:
:= (
do'=', enddo [V = @(union, V1, V2, V3, {name:Id})]
= "(do "' ' '
@(tab, [L])')
)
Ясно, что описывается конструкция DO на языке FORTRAN :)
О конкретных вариантах подсветки также следует подумать, всё, естественно, не окончательное.