Песочница

Исходный текст, токены и чтение

Считыватель принимает фиксированную UTF-8-грамматику S-выражений и до нормализации выдаёт детерминированную диагностику этапа чтения.

Когда это нужно

Начните здесь, если исходный текст отклоняется ещё до выполнения или непонятно, обозначают ли скобки вызов или данные. Считыватель отвечает за написание и структуру, а вычисление ещё не началось.

Проверьте запуском

LISPEX
'(alpha 1 2/3 #u8(4 5))

Наблюдаемый результат

OUTPUT
(alpha 1 2/3 #u8(4 5))

Разбор примера

Начальная кавычка сохраняет всю форму как данные. Считыватель распознаёт символ-идентификатор, целое число, рациональное число и байтовый вектор, но ничего не вызывает и не вычисляет. Без кавычки alpha оказался бы в позиции процедуры.

Как рассуждать

  • Грамматики целых, рациональных и вещественных токенов не пересекаются, а ведущие нули и неконечные числа отклоняются.
  • Формы списков, точечных пар, векторов, байтовых векторов, строк, символов, quote, quasiquote и комментариев зафиксированы.
  • Ошибки чтения имеют коды E1xx и диапазон исходного текста, а неверный UTF-8 отклоняется на границе вызова.

Быстрый выбор

Что требуетсяЗаписьЧто создаёт считыватель
имяalphaсимвол-идентификатор для последующего поиска
текст"alpha"неизменяемая строка
правильный список как данные'(alpha 1)цепочка пар с () в конце
точечная пара как данные'(alpha . 1)одна пара с хвостом 1
индексируемые значения#(1 2)вектор
байты#u8(1 2)неизменяемый байтовый вектор

Частая ошибка

Префиксы основания и точности вроде #x и #e находятся вне текущего профиля.

Текущие границы

  • Язык не выполняет скрытой нормализации переводов строк, путей или кодировки среды.

Куда дальше

Далее разберите порядок вычисления, а за полным перечнем допустимых токенов откройте грамматику чтения.

Порядок вычисления · Грамматика чтения