Разработка игр для Брус-16 на DSL
Рекомендуется использовать Python как препроцессор. Исходный код игры размещается в f-строке, что позволяет на этапе компиляции:
- Вычислять константы.
- Генерировать повторяющиеся фрагменты кода.
- Встраивать сгенерированные данные непосредственно в текст программы.
Особенности DSL
- Переменные: глобальные (на верхнем уровне) и локальные (внутри функций).
- Функции: определяются ключевым словом def.
- Управляющие конструкции:
if,elif,else,while,return,pass. - Операторы:
- арифметические:
+,-,*; - побитовые:
&,|,^,<<,>>; - сравнения:
==,!=,<,<=,>,>=; - присваивания, простые и составные (=, +=, -= и т.п.).
- арифметические:
- Индексация массивов:
my_array[index]. - Глобальные переменные и функции могут быть объявлены в любом порядке.
Отличия от Python
- Ключевое слово
globalне используется. - Один тип — 16-битные знаковые целые.
- Косвенные вызовы функций не поддерживаются.
- Отсутствуют также: цикл
for, классы, исключения, импорты и прочие расширенные возможности Python. - В текущей версии компилятора не проверяется согласованность
returnи если возвращаемое значение не используется, его все равно необходимо присвоить переменной, такой как_.
Макросы
peek(address): чтение 16-битного слова из памяти данных.poke(address, value): запись 16-битного слова в память данных.wait(): ожидание начала следующего кадра (синхронизация с частотой обновления экрана).shra(x, y): арифметический (знаковый) сдвиг вправо.ltu(x, y): беззнаковое сравнение "меньше чем".set_fp(address): установка указателя фрейма (fp). Функции, в которых вызываетсяset_fp, не должны использовать локальные переменные.
Комментарии
Пока нет комментариев. Будьте первым!
Войдите, чтобы оставить комментарий.