Комментарий начинается символом ';' и продолжается до конца строки.
Пробелы, табуляции, переводы строки и страницы

цифра = 0123456789
буква = +-.*/<=>!?:$%_&^~ | abcdefghijklmnopqrstuvwxyz |
	ABCDEFGHIJKLMNOPQRSTUVWXYZ | '\200'...'\377'
_______________________________
Целое число:
	[+ | -] цифра цифра...
Пример:
	1234
	+5678
	-9876
_______________________________
Логическая константа:
	#f | #t
Пример:
	#f
	#t
_______________________________
Идентификатор:
	+ | - | буква (буква | цифра)...
Пример:
	lambda
	<=?
_______________________________
Выражение:
	логическое | целое | идентификатор | 'выражение |
	(выражение выражение... [. выражение])
Пример:
	123
	'a
	(p q r)
	(p q . r)
_______________________________
Защита от выполнения:
	(quote expr) | 'expr
В качестве значения выдается невычисленный аргумент.
Пример:
	(quote (a b c))
	'(a b c))
_______________________________
Определение переменной:
	(define var expr...)
Определяется переменная с именем var, и ее значением
становится результат вычисления последнего из expr.
Он же выдается в качестве значения всего выражения.
Пример:
	(define x 5)
	(define f (lambda (x) (x x)))
_______________________________
Группирование выражений:
	(begin expr...)
Значение последнего выражения становится результатом.
Все переменные, определяемые внутри выражения begin,
являются локальными.
Пример:
	(begin (define x 5) (lambda (z) (+ z x)))
_______________________________
Создание функции (замыкания):
	(lambda (arg...) expr...)
Возвращается функция с аргументами arg... и телом expr...
Все используемые переменные приписываются в момент
определения функции (контекст запоминается).
Пример:
	(lambda (x) (cons x x))
_______________________________
Задание локальных определений:
	(let ((var val)...) expr...)
Выражения val вычисляются, затем определяются новые
переменные var, им приписываются вычисленные значения,
после чего присходит вычисление expr.
Значение последнего выражения становится результатом.
Пример:
	(let ((x 5)) (lambda (z) (+ z x)))
