NOL

Материал из Прулепедии
Перейти к: навигация, поиск

Язык программирования NOL (No Lisp)

Проект

Автор Пруль

Цель проекта: гиковское развлечение. Язык планируется для реализации в операционной системе Proolix, именно поэтому он так прост

Статус: только эта страница спецификации, до начала реализации еще я еще не дошел и забросил

синтаксис

(функция аргумент1 аргумент2 аргумент3 ... )

выполнение большинства функций (если не оговорено иное)

вычисляем (eval) первый аргумент, кладем результат в стек вычисляем второй, кладем и так до конца списка аргументов

потом вызываем функцию (она сама должна взять аргументы из стека и вернуть результат в стек)

Арифметические функции

(sum x y)

(sub x y)

(mul x y)

(div x y)

(square x)

(neg x)

Сравнения

(lt x y) (gt x y) (eq x y) (lte x y) (gte x y)

Объединение функций в арифм. выражение

x^2 + 2*a +b

(plus (plus (mul x x) (mul 2 a)) b)

Функция присваивания

(set a b)

делает a:=b

Условная функция

(if условие выр1 выр2)

Цикл

(for exp1 exp2 exp3 body) как в C

(while body) выполняется, пока body возвращает true

Примеры программ

Вывод 80 звездочек

(for (set i 0) (lte i 80) (set i (sum i 1)) (printchar '*'))

Поэтому для облегчения программирования надо ввести новые функции

(inc x) (dec x)

И функцию-оператор повторения N раз

(repeat N body)

Определение новых функций

(defun square (x) (mul x x) )

Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты