Синтаксис 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 ячейка
сохранит своё значение, ведь оно
может быть изменено системой, или
другим способом
*/
)
ОкраскаКомментарии