Как рассуждать
- Целое:
-?(0|[1-9][0-9]*); рациональное: целый числитель и положительный канонический знаменатель; вещественное требует дробной части или экспоненты. - Положение точки, экранирование, диапазон байтов и закрытие разделителей проверяются до нормализации.
- Шестнадцатеричный скаляр в строке записывается
\xHEX;, а знак —#\xHEXбез точки с запятой. - Диапазоны исходника сохраняют идентичность входа считывателя и детерминированные позиции.
Закреплённая грамматика токенов
| Токен | Допустимая форма | Граница отказа |
|---|---|---|
| целое | -?(0|[1-9][0-9]*) | ведущий ноль, префикс основания или точности |
| рациональное | <целое>/[1-9][0-9]*; сокращается | нулевой/отрицательный знаменатель, ведущий ноль |
| вещественное | десятичное с дробью и/или экспонентой | неоднозначное целое, не конечный литерал |
| строка | UTF-8 в кавычках с закреплёнными escape, включая \xHEX; | незавершённый escape или пропущенная шестнадцатеричная точка с запятой |
| знак | #<скаляр>, #\xHEX или закреплённое имя | неверный скаляр или точка с запятой после шестнадцатеричного знака |
| байтовый вектор | #u8(<байт> ...) | элемент вне 0..255 |
Имена знаков — ровно space, newline, linefeed, tab, return,
null, nul, delete, rubout, escape, esc, backspace, alarm и
page. Строчный комментарий начинается с ;, блочный #| ... |# может
быть вложенным, а начальный заголовок ;! сохраняется. Комментарий datum
#; и директива #lang отвергаются с E120, а не удаляются как trivia.
Частая ошибка
Расширения считывателя, не перечисленные в профиле, отвергаются явно.
Куда дальше
Держите эту страницу рядом при написании кода. За последовательным объяснением вернитесь к карте синтаксиса или соответствующей главе.