Pull to refresh

Основные концепции принятые в языке Lada

Reading time5 min
Views695
Язык системы Lada является объектным. Он является не столько языком, сколько системой правил создания, редактирования, хранения и протоколом обмена объектов, которые должны соблюдать языки, работающие в системе Lada. Эти правила общие и для создания текстовых документов (на других языках), и для создания, хранения и редактирования любых данных, а могут быть и языком программирования. Имеются средства императивного представления объекта (со свойствами, методами и событиями), элементы функционального программирования, так и логическое представление объекта (представление в виде высказывания). Реализована так же автоматная парадигма. Кроме того сделана попытка универсализации синтаксиса определения объектов. И дело не в желании автора сделать что-то оригинальное, а как раз наоборот привести к единому виду. Для этого проработаны три концепции. А именно:

1. Правила именования объектов.
2. Правила группирования объектов. Объединение объектов.
3. Принцип вложенности объектов.
4. Правила создания объектов.
5. Правила реализации объекта (Присвоение значений свойств, добавление новых свойств, методов и событий).

Ниже обосновывается необходимость этих концепций в ООП, подробное описание которых в соответствующих разделах документа.
По поводу необходимости именования объектов вопросов быть не должно. С помощью имен мы имеем возможность идентифицировать объект. Правила именования объектов состоят из двух частей правила присвоения имени объекту и правила использование имени как инструментом доступа к объекту. Обычно имя объекта уникально в какой-то области. В системе Lada уникальность имени не всегда обязательна (Раздел 1).
Понятие группы принципиально для машины Lada, прежде всего потому, что она выполняет не только объекты, но и группы объектов. Например, в операции сложения (как и в любых других) в машине Lada участвует не два оператора, как обычно, а группа операндов, выполняющихся по правилам группирования. (Раздел 2).
Каждый объект может иметь вложенные объекты. В случае с операцией сложения вложенными объектами являются операнды. Форма может содержать элементы управления. Операторы могут иметь вложенные операторы, являющиеся телом оператора. Для системы Lada принцип вложенности является одним из основных и потому является частью синтаксиса определяющего объект.

При создании объекта необходимо определить:
1. Класс объекта. Обязательно.
2. Имя объекта. Не обязательно.
3. Присвоить значения свойствам, добавить новые свойства (отличные от определенных в классе), методы и события.
4. Добавить вложенные объекты.

Класс и имя объекта определяется следующим синтаксисом:

Объект=«Имя класса» «Имя объекта»

Присвоение значений свойствам, методы и события осуществляются операторами, следующими в скобках за определением объекта. Применение скобок (группирование объектов) с этой целью называется реализацией и осуществляется по правилам группирования и правилам реализации. (Раздел 3).

Так происходит создание объектов синтаксисом. И совсем очевидно, что объекты создаваемые синтаксисом появятся после трансляции. Но, объекты можно создавать и перетаскивая их с панели инструментов или набирая буквы с клавиатуры. Буквы ведь тоже объекты. Т.е. создавая и редактируя документ, мы имеем дело с объектами. Объекты, создаваемые таким образом, имеют графическое изображение, потому мы их и назовем объектами-знаками. Изменение значений свойств таких объектов обычно происходит с помощью панели свойств объекта (либо вызвом пункта «свойства» в контекстном меню вызываемого правой кнопкой мыши), которая строится на основе описания класса. Но в системе имеется возможность присваивать значения, добавлять вложенные объекты или расширять возможности объекта новыми свойствами, методами и событиями, а так же добавлять в объект вложенные объекты. Эта возможность называется реализация объектов-знаков. (Раздел 3).
Понятно, что объекты-знаки и являются содержимым документа. Этот документ в таком виде мог бы и храниться. Однако есть еще один класс объектов, который создается на этапе лексического анализа. Это объекты-значения. Объектами-значениями мы назовем объекты, порождаемые классом Type и имеющие цифровое или текстовое представление. Например, «21», «100кг» или «1 октября 1995г». И если язык, в котором мы работаем, имеет лексику, то лексический разбор происходит автоматически сразу при наборе документа, и этот лексический анализ создает объекты-значения.
Итак, первый метод создания объекта, это создание букв (знаков), лексем и значений. Объекты-знаки обычно создаются набором на клавиатуре. Объекты лексемы и значения возникают из группы знаков в результате лексического анализа. Поясним это на примере. Так следующий текст
For I=30 To N {J +:= 1}
в результате лексического анализа разделяется на лексемы «For», «I», «=», «30», «To» и т.д. В этом смысле «For», «I» и«To» объекты-лексемы класса «Word». Итак, мы видим что объект «I» можно рассматривать как объект-букву и как лексему класса Word. Именно эти объекты (полученные в результате лексического анализа) будут поданы как входная цепочка в синтаксический анализатор (и далее в семантический). В результате работы синтаксического анализатора из последовательности лексем будет создан объект класса For с именем I, который в свою очередь может нуждаться в реализации. Отдельно остановимся на объектах-значениях. В нашем примере в результате лексического анализа из знаков «30» создастся объект класса Integer и значением 30. Это и есть объект-значение. Объектами-значениями мы назовем объекты, порождаемые классом Type и имеющие цифровое или текстовое представление. Например, «21», «100кг» или «1 октября 1995г».
И последний вариант создания объектов при трансляции по правилам синтаксисичекого анализа. Например, из такой синтаксической конструкции Integer I=30 в результате трансляции будет так же получен объект класса Integer со значением 30 и по имени I.
Итак, имеем иерархию объектов. Сначала объекты-знаки, затем объекты лексемы и следующий уровень это объекты, получаемые в результате трансляции при анализе синтаксиса. Все эти объекты суть статические, т.е. находящиеся в теле документа. С помощью реализации можно изменить свойства и наполнить функциональным содержанием объект. По причине того, что изменение свойств и выполнение функционала необходимо выполнять на разных этапах и существует несколько видов реализации. Так реализация объектов-знаков, лексем и значений происходит на этапе лексического разбора и определяется скобками (лексические скобки) «‘» «’». Реализация объекта-знака следует непосредственно за этим знаком без пробела. Реализация лексем и значений осуществляется через пробел после реализуемого объекта. И выполняется во время лексического анализа. Реализация объектов создаваемых синтаксисом подчиняется правилам группирования, т.е. фигурными, круглыми или квадратными скобками. Свойства присваиваются на этапе трансляции, а функциональная часть выполняется при запуске оттранслированной программы. Кроме этого каждый объект может содержать логическую реализацию, которая осуществляется скобками (логические скобки) «‹» и «›». И, наконец, реализация имен осуществляется скобками «“» и «”». Смысл реализации имен в том, что объект или группа объектов (например, функций или понятий) может быть вызвана по имени и выполнена (возможно, с параметрами), но после выполнения объекта, может быть необходимо выполнение каких-то еще действий. Вот такую реализацию и назовем реализацией имен или метареализация. Раздел 3.
И есть еще четвертый вариант создания оъектов динамически, во время выполнения. Динамические объекты создаются оператормаи Dim, New и Var в результате выполнения, методом применения этих операторов к объекту.
Tags:
Hubs:
Total votes 18: ↑9 and ↓90
Comments16

Articles