Файла генерации кода для AutoHotkey.
AutoHotkey — бесплатная программа с открытым исходным кодом для создания макросов и автоматизации, позволяющая упростить повторяющиеся задачи. Особенно хочу подчеркнуть очень дружелюбного коммюнити у AutoHotkey. Актуальную версию AutoHotkey и документацию к ней смотрите тут:
http://ahkscript.org . На
http://www.autohotkey.com/ программа и документация к ней устаревшая. Подробнее об AutoHotkey смотрите тут:
http://ru.wikipedia.org/wiki/AutoHotkey .
Код генерируется для актуальной версии AutoHotkey_L. Совместимость со старой версией Basic и с разрабатываемой (альфа версия) AutoHotkey v2 не проверялась. В будущем когда разработчики AutoHotkey v2 окончательно определятся с его синтаксисом планирую и для него написать генератор.
Генератор находится в бета стадии и некоторые детали могут измениться в будущем. Считаю необходимым, чтобы и сообщество AutoHotkey протестировало генератор, а может и добавило новый функционал. Также написана документация к генератору на английском языке в соответствии с форматом других документов для других генераторов DRAKON Editor. Прошу добавить данный генератор в DRAKON Editor. Как только вы добавите данный генератор в DRAKON Editor, я открою соответствующие темы на форумах где используют AutoHotkey.
Если вы считаете, что нужно внести какие-либо изменения в генератор до включения в DRAKON Editor просьба совместно их обсудить.
За основу был взят файл генерации кода для Lua. Файл генерации полностью создан с использованием ДРАКОН-схем.
Отличия от других генераторов кода:
1) Можно создать 3 типа ДРАКОН-схем в зависимости от его названия:
а) ДРАКОН-схема свободного типа, в котором весь код помещается между label и return. Название label такое же как и соответствующей ДРАКОН-схемы. Данный тип ДРАКОН-схемы нужен в тех случаях, когда AutoHotkey не позволяет помещать код внутри функции. Свободная ДРАКОН-схема создается добавлением в начале имени
Free_ (регистр символов не имеет значения).
б) ДРАКОН-схема типа hotkey, код которого помещается внутри hotkey. При этом заголовок ДРАКОН-схемы должен соответствовать синтаксису названия hotkey. ДРАКОН-схема типа hotkey создается при наличии в имени ДРАКОН-схемы
:: (два двоеточия).
в) И третий тип ДРАКОН-схемы помещающий код внутри функции. Ими являются все ДРАКОН-схемы с именами не как у первых двух типов.
Более подробно смотрите в англоязычной документации.
2) Комментировать ДРАКОН-схему (код не будет генерироваться) можно через добавление
Comment_ (регистр символов не имеет значения) в начале диаграммы. Так удобнее, по сравнению с другими генераторами в которых тоже самое достигается путем добавлением comment к параметрам функции. В этом случае сразу видно которая ДРАКОН-схема закомментирована, а в случае с параметрами не так наглядно.
3) Генератор поддерживает как обычный for цикл, так и упрощённый вариант For цикла, такой же как в Lua. Более подробно смотрите в англоязычной документации.
4) В генерируемом файле добавлен комментарий указывающий на версию генератора для данного языка. Так как, генератор может измениться в будущем, думаю разумным знать посредством какой версии генератора сгенерирован файл.
Прошу обратить внимание, что при генерации кода из свободной ДРАКОН-схемы после label добавляется
{} . Это нужно для предотвращения возможной ошибки, которая не позволяет сразу после label писать некоторый вид кода.
Также в генерируемом коде с первого взгляда может показаться, что присутствуют лишние
return . Они нужны для того чтобы не было непредумышленного исполнения кода, т.е. определенная страховка.
Также генерируются некоторые дополнительные комментарии, например к дополнительным
return и
{} . На AutoHotkey программируют многие начинающие программисты, поэтому считаю необходимым их наличие, чтобы они не думали, что код лишний.
Foreach цикл пока не рабочий! Пока не знаю каким он должен выглядеть в AutoHotkey. Думаю, насчет этого нужно посоветоваться с другими пользователями AutoHotkey. Специально не убирал код для Foreach цикла от Lua, чтобы другие пользователи имели возможность при необходимости его сами доработать. Поэтому прошу при включении данного генератора в DRAKON Editor, данный код не убирать, пока он все равно в бета версии. В последующих версиях планируется добавление работающего Foreach цикла.
Также пока не готовы примеры кода которые не имеются у других генераторов в папке examples. Я не профессиональный программист и пока не разобрался с данными алгоритмами, но хочу в будущем их сделать.
Также у меня к Вам вопрос:
Для чего нужны в генераторе ДРАКОН-схемы которые находятся в каталоге Jump? По моим наблюдениям в генерируемом коде нигде goto не используется.
Генератор кода и документация на английском языке (также отдельно прилагаются изображения и схемы используемые в документации) находятся в прикрепленном файле.