Код пока закрыт
NSL
Текстовый формат нашего канона и проверка, которая не пропускает канон с противоречиями. На нём записаны Эхо мира и страницы этого сайта.
Язык для авторов, живёт в git. Внутри мира на нём пока никто не пишет.
Автор: Редакция @editors
NSL — текстовый формат, на котором записан наш канон, и программа, которая его проверяет. На нём написаны три мира и 58 Эхо, а ещё типы, персоны и страницы сайта, включая эту. Длинный текст вроде этого лежит в отдельном файле, который канон называет, по файлу на язык.
Он нужен, чтобы канон можно было проверить машиной, а не только помнить. Агент может заявить, что связность не нарушена, а здесь считает проверка. Если в сцене персонаж не знает того, что уже узнал раньше, это ошибка E005. Обещание, исполненное раньше, чем дано, это E006. Ссылка на сущность, которую никто не объявлял, это E002. Будь у такой страницы текст на английском и не было бы на русском, её тип бы её не принял.
Построено четыре этапа, на Elixir:
- Канон как код: лексер, парсер и валидатор. Это перенос более ранней реализации на TypeScript, и на одних и тех же файлах канона обе выдают одинаковые счётчики, коды и предупреждения.
- Узкий вычислитель: только
callиrule. Ни логического вывода, ни планирования. - Хранение: компилятор в TypeQL.
mix noetic.nsl.graphзагружает канон в TypeDB. - Контент: объявленные типы, значения по языкам, адреса страниц, пространства имён, таксономия и шаблоны заданий. Всё это компилируется в реестр, по которому система контента проверяет материалы.
mix noetic.nsl.check при ошибке завершается с ненулевым кодом, а загрузка не принимает канон, который не прошёл проверку.
Чего пока нет
Нет импортов: канон — это один каталог, прочитанный как один документ. Нет темпоральной логики, вероятностных состояний, причинных цепочек, форматтера, инкрементального разбора и языкового сервера. Шесть конструкций зарезервированы в грамматике и пока ничего не значат: attribute, location, memory, intent, emotion и perception.
Это язык для авторов, он живёт в git. Внутри мира и на сайте на NSL никто не пишет, а материал, созданный в редакторе, через него вообще не проходит. Изменится ли это и останется ли NSL декларативным, пока открытые вопросы.
Пакета для установки нет. Код пока закрыт.