Два способа записи
Язык можно набирать целиком на русской раскладке клавиатуры: все
конструкции, для которых раньше нужны были { }, ->, &&, <>,
[], $ и другие знаки, которых на русской раскладке нет, имеют
словесную запись. Это основной способ записи; во всей документации
примеры даны в нём. Старая запись по-прежнему принимается компилятором
(можно даже смешивать в одном файле), так что существующие программы
продолжают работать без изменений.
| Старая запись | Новая запись (русская раскладка) | ||
|---|---|---|---|
{ ... } | тело сразу после заголовка, закрывается конец | ||
-> тип | : тип | ||
&&, `\ | \ | , !` | и, или, не |
<, >, <=, >= | меньше, больше, не больше, не меньше | ||
Список<целое> | Список из целых | ||
Словарь<текст, целое> | Словарь из текста и целого | ||
функция обмен<Т>(...) | функция обмен из Т (...) | ||
результат<целое>, канал<текст> | результат из целого, канал из текста | ||
числа[0] | числа(0) | ||
целое[5], целое[] | целое(5), целое() | ||
[1, 2, 3] | массив(1, 2, 3) | ||
$имя, ${выражение} | %имя%, %(выражение)%; %% — знак процента |
Падежи в типах
После слова из встроенные типы можно писать в родительном падеже, как в обычной русской речи:
| Одна штука | Много штук |
|---|---|
результат из целого, канал из текста | Список из целых, Список из текстов |
Словарь из текста и целого | Список из дробных, Список из верных |
Формы: целого/целых, дробного/дробных, текста/текстов, верного/верных. Прежняя запись (результат из целое, Список из текст) продолжает работать, так что старый код менять не нужно. Для собственных структур слово остаётся в исходной форме: Список из Пользователь. Слова вроде текста по-прежнему можно использовать как имена переменных: особый смысл они получают только сразу после из.
&, `\ | , ^, ~, <<, >>` | наложить_маску(а, б), включить_биты(а, б), переключить_биты(а, б), инвертировать_биты(а), сдвинуть_влево(а, н), сдвинуть_вправо(а, н) |
|---|
Правила, о которых стоит знать:
конецобщий для цепочкииначе если: каждая цепочка
закрывается одним конец. иначе если считается цепочкой, только
если если стоит на той же строке, что и иначе; если если
начинается на следующей строке, это обычный оператор внутри блока
иначе со своим конец.
- Разделитель типов —
и(запятая тоже принимается): `Словарь из
текста и целого`. Если вложенный обобщённый тип стоит не последним
аргументом, пиши его в скобках старой записи (`Словарь<Список<целое>,
текст>) — иначе и` читалось бы неоднозначно.
числа(0)— это индексация, есличисла— переменная или
параметр (локальное имя побеждает одноимённую функцию), либо поле структуры, не совпадающее с именем метода.
- Пустые
()в типе (целое()— динамический массив) нельзя
писать сразу после : в типе возврата — там пиши [].
- Зарезервированные слова:
конец,из,и,или,не,
меньше, больше больше нельзя использовать как имена переменных.
%в строках:%имя%подставляет значение; чтобы получить
обычный знак процента, пиши %% (например, "100%%").
Конвертер старого кода
Компилятор сам переписывает программу из старой записи в новую:
запустить --в-русский файл.код # результат на экран
запустить --в-русский файл.код --на-месте # перезаписать файл
Комментарии и форматирование сохраняются. После конвертации результат разбирается заново, и дерево программы сравнивается с исходным: если они не совпали, файл не записывается, а печатается сообщение об ошибке. Так были переведены все файлы самого проекта (примеры, тесты, стандартная библиотека, сайт, панель разработчика).