Синтаксис ksi

ksi lang - это язык программирования
и со строгой, и с динамической типизацией,
который предназначен для любых целей.

Данный сайт содержит лишь документацию
языка ksi на русском языке.

Комментарии

-- Однострочный комментарий %v += %d -- Значение ячейки %d добавили к %v /* Многострочный комментарий /* Вложенный комментарий */ -- Вложенный однострочный */
ОкраскаКомментарии

Разграничение имён

@module -- Имя программного модуля _category -- Категория типа $type -- Тип данных &write -- Имя функции #iterator -- Генератор выдачи ряда значений %nice /* Имя ячейки: * Свойство * Параметр функции * Переменная */ count# -- Ячейка только для чтения /* Обратите внимание на символы в именах: @ _ $ # % */
ОкраскаКомментарии

Разделы файла

-- В начале файла разрешены комментарии @main -- Первый модуль /* Декларативная часть Определите: Категории, Типы, Функции, Итераторы */ do ( -- Императивная часть -- Не больше одного раздела do на модуль ) @lib -- В один файл можно поместить части разных модулей -- Один модуль можно распределить по разным файлам -- Раздел do () не обязателен для каждого модуля
ОкраскаКомментарии

Типизация ячейки

/* В ksi два способа типизации: Строгая типизация: С указанием типа Динамическая: Ограничение категорией */ @main -- Определим структурный тип: $point = struct ( -- Добавим свойства: %x %y %z _number@std: (%x %y) = 0, %z = -10.0 /* Ограничение типа их значений: Категория _number из модуля @std */ ) -- Задание начального значения при -- динамической типизации обязательно do ( /* Тип $point определён в текущем модуле Значит уточнять что $point@main не обязательно */ local ( $point: %position ) /* Если мы не указали начальное значение ячейки со строгой типизации, то будет авто-инициализация */ -- У структуры меняем свойство %x %position.x = 5 -- Для readonly ячейки начальное -- значение указывать обязательно local ( _any@std: size# = 15 ) -- Попытка перезаписи значения в readonly ячейку size# = 20 -- вызовет ошибку обработки /* Ошибки обработки выявляются до стадии выполнения ksi не гарантирует, что readonly ячейка сохранит своё значение, ведь оно может быть изменено системой, или другим способом */ )
ОкраскаКомментарии