Грамматика reader определяет пробелы/комментарии, идентификаторы, булевы, символы, строки, числа, списки, векторы, bytevector и префиксы quote.
Текущие гарантии
- Целое:
-?(0|[1-9][0-9]*); рациональное: целый числитель и положительный канонический знаменатель; real требует дроби или экспоненты. - Положение точки, escapes, диапазон байтов и закрытие разделителей проверяются до нормализации.
- Диапазоны исходника используют идентичность ввода reader и детерминированные позиции.
Закреплённая грамматика токенов
| Токен | Допустимая форма | Граница отказа |
|---|---|---|
| целое | -?(0|[1-9][0-9]*) | ведущий ноль, radix/exactness prefix |
| рациональное | <integer>/[1-9][0-9]*; сокращается | нулевой/отрицательный знаменатель, ведущий ноль |
| real | десятичное с дробью и/или экспонентой | неоднозначное целое, не конечный литерал |
| символ | #\<scalar> или закреплённое имя | неверный scalar или неполный escape |
| bytevector | #u8(<byte> ...) | элемент вне 0..255 |
Границы
- Расширения reader, не перечисленные в профиле, завершаются явно.