OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Среда, 17 Апрель, 2024 00:23

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 679 ]  На страницу Пред.  1 ... 6, 7, 8, 9, 10, 11, 12 ... 34  След.
Автор Сообщение
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Понедельник, 24 Май, 2010 09:37 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Сергей Прохоренко писал(а):
Посмотрел TIFF более подробно. Всё-таки этот формат предназначен для других целей - для хранения изображений и прочих однородных данных. Нам же нужно хранить деревья и таблицы, состоящие из записей. Для этого нужно в языке разметки иметь "тагированные" операторные скобки - именно то, что есть в XML, но нет в TIFF. Хотя у TIFF есть несомненное достоинство - не нужно искать закрывающую скобку, а достаточно отсчитать SIZE байтов от открывающей скобки, что позволяет сделать более быстрый парсер для данных простой структуры (это, к сожалению, не наш случай).
Мне кажется, вы недостаточно полно оценили возможности "простого" формата. У меня в файл пишется именно дерево объектов, но при этом некоторые объекты (TCurve - графики полученных от прибора данных) позволяют себе сохранять массивы данных типа array of real безо всякого дополнительного кодирования - просто бинарным дампом памяти. Очень просто и эффективно. Дерево объектов:
Код:
(TMainForm
   (TArchiveInfo)
   3x(TChannelData
      (TStandardParams)
      (TAdditionParams)
      (TSampleParams)
      (TAnalyzeParams)
      0..6x(TMarkerDatas)
      1..9x(TCurve
         6x(TPeak)
         12x(TMarkerDatas)
         (TAnalyzeParams)
      )
   )
   (TValMethod
      1..6x(TValMethodElement)
      1..8x(TValMethodStage)
      (TValMethodSweep
         0..Nx(TSweepPause)
      )
      (TWashSettings)
      (TTreatmentParams)
   )
)
Каждый объект сохраняет свои данные плюс предоставляет возможность сохраниться вложенным объектам. Объект типа TMainForm сохраняет какие-то свои настройки, в том числе объект типа TArchiveInfo, объект типа TValMethod и три объекта типа TChannelData. Каждый из них, в свою очередь, сохраняет собственные данные (не показаны на карте) плюс вложенные объекты. Скелет кода на Delphi:
Код:
procedure TMainForm.SaveToStream(Stream: TStream);
begin
   Stream.Write(tag_ArchiveInfo);
   Stream.Write(Self.FArchiveInfo.GetStreamSize);
   Self.FArchiveInfo.SaveToStream(Stream);
   ...
end;

procedure TMainForm.LoadFromStream(Stream: TStream; StopPos: Integer);
var Tag, Size: Integer;
begin
   while Stream.Position < StopPos do
   beign
      Stream.Read(Tag);
      Stream.Read(Size);
      case Tag of
         tag_ArchiveInfo:
            Self.FArchiveInfo.LoadFromStream(Stream, Stream.Position + Size);
         ...
      else
         Stream.Seek(Size, soFromCurrent);
      end;
   end;
end;
Можно реализовать и без GetStreamSize, добавив скобки типа Stream.BeginData/EndData, а заодно избавиться от параметра StopPos, но я не стал заморачиваться.

Простота или сложность структуры ни при чём. В поле Data любого тэга любой объект может хранить что угодно, в том числе данные других объектов, сколь угодно сложных.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Понедельник, 24 Май, 2010 11:42 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Александр Ильин писал(а):
...
Код:
(TMainForm
   (TArchiveInfo)
   3x(TChannelData
      (TStandardParams)
      (TAdditionParams)
      (TSampleParams)
      (TAnalyzeParams)
      0..6x(TMarkerDatas)
      1..9x(TCurve
         6x(TPeak)
         12x(TMarkerDatas)
         (TAnalyzeParams)
      )
   )
   (TValMethod
      1..6x(TValMethodElement)
      1..8x(TValMethodStage)
      (TValMethodSweep
         0..Nx(TSweepPause)
      )
      (TWashSettings)
      (TTreatmentParams)
   )
)
...

не помню, кто из мэтров сказал (нечто вроде) :
"... что бы программисты и создатели языков не изобретали, в конечном итоге, они опять изобретают Лисп. ..." :twisted:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Понедельник, 24 Май, 2010 12:16 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
Чем проще формат, тем больше нужно программировать его обработку. :( (закон рычага)

Мне больше нравятся встроенные базы данных, в которых формат хранения данных почти совпадает с внутренним представлением семантического редактора (абстрактное синтаксическое дерево и таблица символов). Преимущества:

1. Мгновенное переформатирование старого кода к новым версиям семантического редактора
2. Мгновенная загрузка больших проектов
3. Не нужно делать парсер
4. Базу данных можно встраивать в разрабатываемые на семантическом редакторе проекты (побочное применение)
5. Вопросы контроля целостности кода, отслеживания изменений, отката к предыдущим состояниям, совместной удаленной работы и т.п. решаются легко, так как это прямые функции базы данных


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Понедельник, 24 Май, 2010 12:22 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Таблица символов - это еще куда ни шло... :) Можно и в базу, хотя это пальба по воробью из пушки.
А абстрактное синтаксическое дерево вы себе представляете в виде ER-диаграммы?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Понедельник, 24 Май, 2010 12:29 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Валерий Лаптев писал(а):
Таблица символов - это еще куда ни шло... :) Можно и в базу, хотя это пальба по воробью из пушки.
А абстрактное синтаксическое дерево вы себе представляете в виде ER-диаграммы?

А вам тут точно нужно AST а не дерево разбора?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Понедельник, 24 Май, 2010 12:41 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Сергей Прохоренко писал(а):
Чем проще формат, тем больше нужно программировать его обработку. :( (закон рычага)

не получается!
просто замените антонимами... :twisted:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Понедельник, 24 Май, 2010 14:06 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
Валерий Лаптев писал(а):
Таблица символов - это еще куда ни шло... :) Можно и в базу, хотя это пальба по воробью из пушки.


Это не "пушка". Не надо при упоминании термина "база данных" представлять себе Oracle или MS SQL Server. Есть вещи вполне миниатюрные, причем некоторые встраиваются даже в смартфоны. Не обязательно даже иметь СУБД - это может быть просто встраиваемый в программу движок или даже библиотеки для каких-нибудь языков программирования.


Валерий Лаптев писал(а):
А абстрактное синтаксическое дерево вы себе представляете в виде ER-диаграммы?


А я ничего не говорил насчет ER-диаграмм. А абстрактное синтаксическое дерево, как и любое дерево, прекрасно представляется в виде таблицы, в которой каждая запись, обозначающая узел, имеет поле со ссылкой на "родительскую" запись (узел).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Понедельник, 24 Май, 2010 14:39 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Сергей Прохоренко писал(а):
А я ничего не говорил насчет ER-диаграмм. А абстрактное синтаксическое дерево, как и любое дерево, прекрасно представляется в виде таблицы, в которой каждая запись, обозначающая узел, имеет поле со ссылкой на "родительскую" запись (узел).

Да чего уж там, любой граф прекрасно представляется в виде матрицы. Не то что какое-то там дерево, которое есть частный случай графа.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 24 Май, 2010 16:06 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
Валерию Лаптеву

Хранение дерева в табличной базе данных: http://pigeek.com/category/bazy-dannyx/

Перевод XML (т.е. дерева) в табличный вид (см. Дилемма 5. Узлы или ребра?): http://www.citforum.ru/internet/xml/xml_fant/

Движок базы данных: http://ru.wikipedia.org/wiki/Database_engine

Встраиваемая СУБД: http://ru.wikipedia.org/wiki/%D0%A1%D0% ... 0.91.D0.94

Сравнение баз данных: http://en.wikipedia.org/wiki/Comparison ... nt_systems


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 24 Май, 2010 18:00 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
Мой первый набросок структуры семантического редактора:

Вложение:
Структура семантического редактора.PNG
Структура семантического редактора.PNG [ 14.36 КБ | Просмотров: 9215 ]


Последний раз редактировалось Сергей Прохоренко Четверг, 27 Май, 2010 15:56, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 24 Май, 2010 18:05 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Сергей Прохоренко писал(а):
Моя первая попытка набросать структуру семантического редактора: ...

пообщайтесь с зуевым.
когда-то в интерстроне писали компилятор с си++ как раз с такими заделами...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 24 Май, 2010 18:23 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
Wlad2 писал(а):
Сергей Прохоренко писал(а):
Моя первая попытка набросать структуру семантического редактора: ...

пообщайтесь с зуевым.
когда-то в интерстроне писали компилятор с си++ как раз с такими заделами...


Спасибо! Уже общался. Он написал, что всё это интересно, но у него сейчас другие задачи, и дел невпроворот. Переписываться он может, но лично участвовать - нет. Про интерстроновский компилятор я читал, а мой старший сын его даже успешно использовал для отладки своих лабораторных, когда компилятор был еще доступен онлайн. Я читал и про компилятор Zonnon .NET от Зуева. Познавательно. Но этим должны заниматься профессиональные программисты, к которым я не отношусь.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Понедельник, 24 Май, 2010 19:39 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Да ради Бога - я хранил в двоичном файле даже граф произвольного вида. И отнюдь не в табличном виде... :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Понедельник, 24 Май, 2010 20:34 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
Валерий Лаптев писал(а):
Да ради Бога - я хранил в двоичном файле даже граф произвольного вида. И отнюдь не в табличном виде... :)


Ну и что? Ваш вопрос касался возможности поместить абстрактное синтаксическое дерево в базу данных. Я привел доказательства того, что это можно и нужно. 8) Но это не имеет никакого отношения к хранению графа в двоичном файле. Сегодня у этого файла одна структура, а через пять лет захочется иметь другую, и об обратной совместимости можно будет забыть. :( Да и других существенных и многочисленных достоинств, которые есть у баз данных (устал их повторять), у двоичного файла нет.

Двоичный файл - устаревшая тупиковая технология, такая же бесперспективная, как и текстовый исходный код. :roll:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Вторник, 25 Май, 2010 05:31 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Сергей Прохоренко писал(а):
Двоичный файл - устаревшая тупиковая технология, такая же бесперспективная, как и текстовый исходный код. :roll:
Хм... Мощно сказано :D . Неужто на горизонте замаячила очередная "панацея"? Сколько их уже было ...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 25 Май, 2010 05:43 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Сергей Прохоренко писал(а):
Моя первая попытка набросать структуру семантического редактора: ...
Честно говоря, структура вызвала больше вопросов, чем ответов. Во первых, у меня возникли смутные подозрения, что семантический редактор - это и не редактор вовсе, а интегрированная среда разработки. Во-вторых, я не обнаружил на схеме, например, средств управления программными ресурсами, теми же битмапами и прочее.

Как было Вами указано, это всего лишь первый набросок. Допускаю, что следующие редакции этого документа будут более понятными, по крайней мере для меня :) .


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Вторник, 25 Май, 2010 09:02 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
igor писал(а):
Сергей Прохоренко писал(а):
Двоичный файл - устаревшая тупиковая технология, такая же бесперспективная, как и текстовый исходный код. :roll:
Хм... Мощно сказано :D . Неужто на горизонте замаячила очередная "панацея"? Сколько их уже было ...


И сколько "их" было? Я что-то не заметил, чтобы программная отрасль захлебывалась от инноваций. Она, скорее, сильно напоминает рынок подержанных вещей.

Советую читать не только отдельные фразы на форуме, но и более длинные документы, например, этот: http://sites.google.com/site/purebuilder/

А что касается слов "замаячила" и "панацея", то Вам, наверное, известно, что в средствах разработки ПО ничего принципиально нового не появлялось уже несколько десятилетий, а идея семантического редактора в той или иной форме бродит в голове многих программистов с мировым именем. См., например: viewtopic.php?f=28&t=140&p=47723&hilit=%D0%A1%D1%82%D1%80%D0%B0%D1%83%D1%81%D1%82%D1%80%D1%83%D0%BF#p47723

Поясните, пожалуйста, какое отношение битмапы, т.е. растровые изображения, имеют к семантическому редактору?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Вторник, 25 Май, 2010 10:08 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Я правильно понимаю, что пока дальше "размахивания руками" дело не продвинулось?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Вторник, 25 Май, 2010 10:13 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Сергей Прохоренко писал(а):
Советую читать не только отдельные фразы на форуме, но и более длинные документы, например, этот: http://sites.google.com/site/purebuilder/
Спасибо, но Вы же уже давали эту ссылку, и я уже сообщал что читал её.
Сергей Прохоренко писал(а):
Поясните, пожалуйста, какое отношение битмапы, т.е. растровые изображения, имеют к семантическому редактору?
Я говорил не о каких-то посторонних битмапах, а о программных ресурсах. Тот же "бесперспективный" Блэкбокс, например, их поддерживает. Ваш семантический редактор будет использовать какую-нибудь альтернативу программным ресурсам? Или может этот вопрос Вы ещё не продумывали? :roll:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Вторник, 25 Май, 2010 11:04 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
А можно по-русски написать, что понимаете под программными ресурсами? Термин многозначный - трактовать можно по-всякому. И что значит их "поддерживать"?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 679 ]  На страницу Пред.  1 ... 6, 7, 8, 9, 10, 11, 12 ... 34  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB