SPARD и подсветка синтаксиса

May 18, 2013 22:57

Во многих языках программирования можно писать код прямо в блокноте. Мы так в школе на 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 :)

О конкретных вариантах подсветки также следует подумать, всё, естественно, не окончательное.

Технологии, Творчество

Previous post Next post
Up