Краткая памятка по грамматике языка
Грамматика
Программа -- это просто последовательность слов (токенов/tokens). Слова разделяются пробелами; любые пробельные символы в любом количестве обозначат просто разделитель.
Первый символ `#' в строке и все идущие за ним до конца строки символы игнорируются. Это комментарии.
Выражения (statements) состоят из слов.
Выражения
Группировка
Если вам нужно, чтобы набор выражений фигурировал в программе, как одно выражение, вы можете сгруппировать выражения, заключив их в блок begin/end.
Это одно выражением, состоящие из множества вложенных в него:
begin ...STATEMENTS... end
Рисование и перемещения
draw VAR-OR-VAL VAR-OR-VAL
jump VAR-OR-VAL VAR-OR-VAL
scale VAR-OR-VAL
right VAR-OR-VAL
left VAR-OR-VAL
width VAR-OR-VAL
Аффинные преобразования
affinescale VAR-OR-VAL VAR-OR-VAL # Масштабирование осей
affinerotate VAR-OR-VAL VAR-OR-VAL # Поворот осей
affinematrix VAR-OR-VAL VAR-OR-VAL VAR-OR-VAL VAR-OR-VAL # Матрица
Цвета
color VAR-OR-VAL VAR-OR-VAL VAR-OR-VAL # красный, жёлтый, зелёный
bgcolor VAR-OR-VAL VAR-OR-VAL VAR-OR-VAL # красный, жёлтый, зелёный
mixcolor VAR-OR-VAL VAR-OR-VAL VAR-OR-VAL VAR-OR-VAL # красный, жёлтый, зелёный и множитель
Переменные и вычисления
Присвоения:
set VAR VAR-OR-VAL # VAR := VAR-OR-VAL
sin VAR VAR-OR-VAL # VAR := sin(VAR-OR-VAL)
cos VAR VAR-OR-VAL # VAR := cos(VAR-OR-VAL)
exp VAR VAR-OR-VAL # VAR := exp(VAR-OR-VAL)
log VAR VAR-OR-VAL # VAR := log(VAR-OR-VAL)
sqrt VAR VAR-OR-VAL # VAR := sqrt(VAR-OR-VAL)
Вычисления:
add VAR VAR-OR-VAL # VAR := VAR + VAR-OR-VAL
sub VAR VAR-OR-VAL # VAR := VAR - VAR-OR-VAL
mul VAR VAR-OR-VAL # VAR := VAR * VAR-OR-VAL
div VAR VAR-OR-VAL # VAR := VAR / VAR-OR-VAL
mod VAR VAR-OR-VAL # VAR := VAR % VAR-OR-VAL
pow VAR VAR-OR-VAL # VAR := VAR ** VAR-OR-VAL
Изменения:
incr VAR # VAR := VAR + 1
decr VAR # VAR := VAR - 1
neg VAR # VAR := - VAR
abs VAR # VAR := | VAR |
Условия
if CONDITION then STATEMENT
if CONDITION then STATEMENT else STATEMENT
где CONDITION -- это три слова:
VAR-OR-VAL OPERATION VAR-OR-VAL
где OPERATION -- одно из lt, gt, le, ge, eq или ne.
Циклы
iterate VAR-OR-VAL STATEMENT
repeat STATEMENT until CONDITION
while CONDITION STATEMENT
Контекст
local STATEMENT # локализация всего контекста
save STATEMENT # локализация только значений переменных
transform STATEMENT # локализация только состояния черепашки
Процедуры
procedure NAME STATEMENT # декларация процедуры
call NAME # вызов процедуры
Другие выражения
nop # не делать ничего