Краткое описание языка программирования Перфо.
В этой статье рассматривается самое общее описание языка программирования Перфо и его назначение.
Язык программирования Перфо.
Перфо – интерпретируемый функциональный язык программирования с русским синтаксисом.
Синтаксис Перфо относится к группе диалектов языка Лисп и наиболее похож на язык Scheme.
Интерпретатор Перфо написан на языке программирования Перфолента.Net, унифицирован с ним по типам данных и использует ту же самую стандартную библиотеку.
Язык Перфо приспособлен для работы в окружении платформы .Net и может использовать любые библиотеки этой платформы.
Исходный код интерпретатора поставляется в комплекте примеров языка Перфолента.Net.
Наиболее вероятное использование языка Перфо — это знакомство с функциональными языками программирования и написание простых скриптов, решающих не сложные задачи.
Интерпретатор Перфо может быть легко подключен к любой .Net программе, в том числе написанной на языке Перфолента, как библиотека, для запуска скриптов пользователя, которые могут на лету изменять характеристики и возможности программы.
Краткое описание языка.
Синтаксис:
· Синтаксис языка Перфо состоит из следующих сущностей: Идентификаторы, Значения, Списки;
· Текст программы может содержать Комментарии и Директивы препроцессора;
· Значение — это литерал, представляющий простой тип. Простые типы — это строки, символы, числа, даты, булево и значение Неопределено;
· Синтаксис значений такой же, как в языке Перфолента (поддерживаются все типы и литералы, кроме литералов многострочных строк), например, "строка" - тип Строка, "С"с - тип Символ, 4 - тип Целое, 4.537 - тип Вещ, 4.537д - тип ДВещ, 4.5ч - тип Число, '23.07.2020' - тип Дата, Истина - тип Булево, Неопределено и другие (смотри в документации языка Перфолента);
· Идентификатор — это любой набор символов, не являющийся литералом значения, и не содержащий пробельных символов и круглых скобок, например, А1, $SYM, !!!Ошибка!!!;
· Список — это последовательность любых сущностей, разделенных пробелами и заключенных в круглые скобки, например, (+ 3 4 5);
Структура программы:
· Программа состоит из последовательности действий, между которыми могут быть комментарии и директивы препроцессора;
· Действие — это список, первым элементом которого является идентификатор действия, а остальные элементы являются параметрами действия: (ИдентификаторДействия Параметр1 Параметр2 ... ПараметрН), например, (мин 34 9 100);
· Действия делятся на операторы и функции.
· Оператор — это специальная форма действия, выполняемого интерпретатором как встроенная команда. Оператор может иметь параметры, смысл и назначение которых, а также последовательность их использования, определены стандартом языка. Операторы могут управлять поведением интерпретатора, менять последовательность выполнения других действий или выполнять предопределенные действия. Оператор нельзя передать как фактический параметр другому действию. Примеры операторов: (Если (Условие) (СписокДействий1) (СписокДействий2)) или (Перем ИмяПеременной Значение);
· Функция — это действие, которое содержит заданную последовательность других действий. Функцию можно хранить в окружении или передать как фактический параметр другому действию. Функции могут быть определены в интерпретаторе или в выполняемой программе;
· Идентификатор может быть вычисляемым: ((Идент "ИдентификаторДействия") Параметр1 Параметр2 ... ПараметрН);
· Идентификатор может быть составным (через точку или двоеточие): (ИмяОбъекта.ИмяМетода Параметр1 Параметр2 ... ПараметрН) или (Функ1:Функ2:ФункН Параметр1 ... ПараметрН);
· Параметр действия может быть идентификатором, значением или списком;
· Последовательность — это список, у которого первый элемент НЕ является идентификатором: ((Действие1) (Действие2) (Действие3));
Возвращаемые значения:
· Значение возвращает само себя;
· Идентификатор возвращает сопоставленное ему значение, хранящееся в текущем окружении, в том числе, действие, идентификатор или значение Неопределено;
· Действие может вернуть значение, другое действие, идентификатор или значение Неопределено;
· Оператор возвращает то, что определено стандартом языка для этого оператора;
· Последовательность возвращает результат вычисления последнего элемента;
Комментарии и директивы препроцессора:
· Как и в языке Перфолента, комментарии начинаются символами //, а директивы препроцессора с символа # в начале строки;
В последующих статьях будут рассмотрены встроенные действия, операторы и функции языка, а так же даны примеры их использования.
Сергей Рогаткин
К началу статьи
Вернуться в раздел:
Перфо - функциональный язык программирования