Одной из любимых тем в части нападок на QSP является его синтаксис — видимо потому, что, как правило, с этим ничего нельзя поделать. Некоторые обходят это с помощью "препроцессинга" (см. заметку "Тем, кто применяет TXT2GAM (использование препроцессора)"), но по мне — это перебор.
Сразу оговорюсь, что любители QGen дальше могут не читать.
Поскольку в работе над своим проектом я использую текстовый редактор, из которого нажатием одной кнопки вызывается утилита txt2gam и запускается QSP (т.е. аналог F5 в QGen), то ничего не мешает встроить в этот процесс ещё один модуль для обработки кода перед компиляцией его в формат QSP.
Модуль написан на VBScript и содержит следующую функцию:
Function ProcessCode (Code) ' Создаём объект для работы с регулярными выражениями Set RExp = CreateObject("VBScript.RegExp") RExp.Multiline=True RExp.Global=True '---------- ' Заменяем <…FUNC(> на <func('FUNC',> RExp.Pattern="…([A-Za-zА-Яа-яЁё0-9_\-\.\{\}]*?)[\t|\x20]*\(" Code=RExp.Replace(Code,"func('$1'§") '---------- Code=Replace(Code,"§)",")") Code=Replace(Code,"§",",") '---------- ' Заменяем <…PROC> на <GS 'PROC',> RExp.Pattern="…([A-Za-zА-Яа-яЁё0-9_\-\.\{\}]*?)[\t|\x20]*(,|&|$)" Code=RExp.Replace(Code,"GS '$1'$2") '---------- ProcessCode=Code End Function
Это даёт мне возможность избавиться в коде (ну кроме строковых участков кода для dynamic/dyneval) от конструкций <GS "процедура", параметры> и <func("функция", параметры)>.
Таким образом вместо кода:
GS 'ВывестиНаЭкран', 'ОписаниеЛокации' Здоровье=func('ПолучитьСвойство', 'Игрок', 'Здоровье')
я пишу
…ВывестиНаЭкран, 'ОписаниеЛокации' Здоровье=…ПолучитьСвойство('Игрок', 'Здоровье')
Для префикса конструкций я выбрал символ "…" потому что он не загромождает код, а с помощью клавиатурной раскладки Бирмана этот символ вызывается простой комбинацией.
Это удобно, и к тому же позволяет раскрасить вызываемые процедуры/функции в нужные цвета, что делает код более читаемым.
Как-то так.
Неактивен
Пока Байт живёт, я надеюсь, полной и насыщенной жизнью, решил попробовать с помощью тех же регулярных выражений создать замену локальным переменным (для чего я использую массив ARGS).
Дольше всего думал над знаками-префиксами — в итоге остановился на © для строковых переменных (потому что как (с)трока) и ° для числовых (потому что как нолик). Мило, правда?
Это к тому же помогло ещё и раскрасить переменные в разные цвета. Что позволило мне получить вот такой образец импрессионизма:
Зимой, когда за окном пасмурно и сыро, это особенно актуально — посмотрим, как быстро глаза вытекут.
Неактивен