Представляю вашему вниманию чистый декларативный язык программирования – Zakaz. Основная идея нового языка – приложение содержит команды на выполнение, написанные в произвольной форме, которые должны быть выполнены “исполнителями”. Если ни один “исполнитель” не может выполнить команду, то выполнение программы останавливается. Приложения называются техзаданиями (tez) и должны иметь расширение .tez. Синтаксис Zakaz обязывает соблюдать два правила:
- Каждая команда начинается с новой строки
- Каждая команда должна быть оформлена формальным языком, понятным для человека
Пример Hello World.tez:
Show "Hello World" text on screen Show "Zakaz 'tez' example" text on screen
Пример тз которое выводит описание принципа работы и открывающего сайт http://demensdeum.com в браузере Firefox
Show "Show website demo" text on screen Show "You need Firefox installed on your system to run this 'tez', and it should be callable through \"system\" C function" text on screen Show "Also there should be \"FirefoxPerformer\" assigned to Zakaz Runtime, please check manual for more information" text on screen Show website with address "http://demensdeum.com" in Firefox
Запускать пример выше необходимо вместе с “исполнителем” FirefoxPerformer, который способен обработать последнюю команду по выводу сайта через Firefox
./ZakazRuntime openDemensdeumSite.tez FirefoxPerformer
Для имплементации своего исполнителя необходимо реализовать его в виде динамической библиотеки, используя абстрактный класс ZakazRuntime::Performer, и вернуть его вместе с умным указателем из метода глобальной функции createPerformer(). В качестве примера можно использовать реализацию FirefoxPerformer.
Исходный код
https://gitlab.com/demensdeum/zakaz