Лексер принимает Unicode-идентификаторы как обычный исходный текст, сохраняет английское написание ключевых слов и точную последовательность скаляров. Затем правила layout решают, разделяет ли перевод строки элементы или продолжает выражение.
Политика
Идентификатор начинается с буквы Unicode, подчёркивания или emoji; далее разрешены те же символы и цифры Unicode. Одиночный _ оставлен для wildcard и placeholder конвейера. Ключевые слова нельзя связывать, а loop, set и map контекстны только в точных головах грамматики. Правило longest match различает ..., .., ..<, ?. и постфиксный ?.
Определённое поведение
Строки — неизменяемые последовательности скаляров Unicode без неявной нормализации. Двойные кавычки поддерживают фиксированные escape и интерполяцию {expression}. Тройные кавычки снимают точный префикс пробелов/табуляций перед закрывающим разделителем, отклоняют несовпадающие непустые строки и не включают первый немедленный перевод строки. В separator-контексте перевод строки завершает полный элемент, если delimiter mode или continuation-токен не продолжает его.
Ограничения и явный отказ
Числовые литералы десятичны; другие основания и разделители-подчёркивания не каноничны. Одинарные кавычки и символьные литералы запрещены, блочные комментарии не вложены, _ нельзя читать как значение. Для строки запрещены s[i], s.length и срезы. Точка с запятой допустима как разделитель, но канонические примеры её не используют.
Отложенная граница
Операции с графемами, прямые срезы строк, неявная нормализация Unicode, дополнительные числовые литералы, вложенные блочные комментарии и новые теги шаблонов отложены. Доступ к скалярам явный через s.scalars().
Пример
function 인사하기(이름: string) -> string {
let message = "안녕하세요, {이름}님!"
return message
}
let 사용자 = "토파즈"
print(인사하기(사용자))