Skip to content
Dmitry Ponyatov edited this page Jun 23, 2020 · 4 revisions

Object базовый класс узла объектного графа

структура базового объекта (узла) выбиралась исходя из универсального представления знаний которое должно обеспечить

  • унифицированное представление одновременно и любых данных, и методов их обработки (программы, алгоритмы),
  • средства анализа и транформации (поиск, выборка по шаблону, правила преобразования)
  • простую реализацию синтаксических анализаторов и кодогенераторов
    • для разработки ПО и
    • разгребания legacy кода (на любых языках программирования и управления проектами), а также
    • чтения/записи текстовых ASCII форматов данных (САПР, форматы обмена, JSON/XML/...)

за основу была взята

# Python
class Object:
    def __init__(self, V):
        # скалярное значение: имя объекта, строка/число,..
        self.val = V
        # слоты = атрибуты = ассоциативный массив = словарь (key/value)
        self.slot = {}
        # вложенные элементы = упорядоченный контейнер = вектор = список = очередь
        self.nest = []
        # уникальный глобальный id для хранения в БД или key/value хранилищах
        self.gid = '%x' % id(self)
type Object* = ref object     ### базовый тип узла объектного графа (фрейма)
  val*:  string                ## скалярное значение: имя объекта / строка / число
  slot*: Table[string, Object] ## слоты = атрибуты = словарь
  nest*: seq[Object]           ## вложенные элементы = AST = вектор = стек = очередь
  gid*:  uint64                ## глобальный идентификатор для key/value хранилища

Остальные типы узлов наследуются непосредственно от Object или от абстрактных классов, группирующих типы и общее поведение для каждой группы. Наследование совершенно произвольное, в зависимости от конкретной решаемой задачи: какие-то понятия прикладной области, форматы данных, онтология, семантические сети и т.д.

Clone this wiki locally