Песочница

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

Считыватель принимает фиксированную 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 находятся вне текущего профиля.

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

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

Куда дальше

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

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