OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 19 Март, 2024 09:04

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




Начать новую тему Ответить на тему  [ Сообщений: 48 ]  На страницу 1, 2, 3  След.
Автор Сообщение
СообщениеДобавлено: Пятница, 17 Октябрь, 2008 08:25 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Опубликованы бета-версии (от 13.10.2008) инст. подсистемы ROCOT и консольного транслятора Рефала-0.

06.07.2011 модератор: удалена неработающая ссылка

07.07.2011 модератор: подсистема выложена в коллекции http://oberoncore.ru/bbcc/subs/rocot/

См. также: viewtopic.php?f=47&t=1275


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Октябрь, 2008 17:32 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Прочитал описание компонент на сайте.
Никак не пойму: а какие проекты можно реализовать с помощью этих компонент? Какие типы задач они решают?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Октябрь, 2008 17:49 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Любые задачи, где надо парсить-преобразовывать строки.
Например, простейшая задача - какая-нибудь обработка путей в файловой системе. Не мучаетесь с циклами-индексами, пишете простые функции-трансформации и генерируете Оберон-процедуры из них.

Почитайте PDF.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Октябрь, 2008 18:47 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Илья Ермаков писал(а):
Любые задачи, где надо парсить-преобразовывать строки.
Например, простейшая задача - какая-нибудь обработка путей в файловой системе. Не мучаетесь с циклами-индексами, пишете простые функции-трансформации и генерируете Оберон-процедуры из них.
Почитайте PDF.


Можно подробнее (по шагам) описать цикл решения этой задачи (обработка путей)?
1. Пишем разбор путей на Рефале. Т.е. имеем на входе текстовый файл.
2. ...
n. Имеем на входе путь, который надо обработать.
...
m. Получили результат (обработанный путь).

Далее: условия задачи поменялись
1. Меняем исходный текст на Рефале
...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Октябрь, 2008 19:31 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
1. Описываем некий алгоритм трансформации последовательности символов в другую последовательность. Возможно, вообще без трансформации, а просто анализа по шаблонам с вызовом внешних процедур (описанных на внешнем языке).
2. Транслируем в процедуры на целевом языке.
3. Помещаем процедуры на целевом языке в нужное окружение (как это делается с YACC-ами всякими). Компилируем.
4. Скармливаем главной процедуре массив символов, во второй массив она помещает нам результат (используя массивы в процессе работы как два стека). В принципе, тривиально (просто пока нужды не было) генерировать код, работающий не с массивами, а с потоками.

Если Вы про то, можно ли алгоритм обработки менять динамически... Ну, в ББ с его динам. загрузкой модулей никаких проблем нет.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Октябрь, 2008 20:50 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Илья Ермаков писал(а):
Если Вы про то, можно ли алгоритм обработки менять динамически... Ну, в ББ с его динам. загрузкой модулей никаких проблем нет.


Мне неясна связь "текст на рефале" -> "результрующая программа (бинарник)". Точнее как она поддерживается. Применительно к BB.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Октябрь, 2008 20:55 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Влад, ну Вы PDF-статью-то читали?

Просто генерируется из каждой Рефал-функции Оберон- или С-функция с опр. сигнатурой. Как и куда она дальше кладётся - дело хозяйское.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 17 Октябрь, 2008 22:24 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Илья Ермаков писал(а):
Влад, ну Вы PDF-статью-то читали?


Я читал. Но не от корки до корки, а интересные моменты. Спасибо за стьатью, кастати. Интересно.

Илья Ермаков писал(а):
Просто генерируется из каждой Рефал-функции Оберон- или С-функция с опр. сигнатурой. Как и куда она дальше кладётся - дело хозяйское.


Я когда про DSL распространялся упоминал, что считаю безшовную интеграцию принципиально важным для успешного применения DSL. Ну получили вы исходник на выходе DSL, написали статью, классно. Но чтобы от всего этого получить отдачу на практике этого мало. Я хорошо представляю как в данном случае происходит интеграция в классических системах программирования. Заводится отдельный шаг сборки. Это не сильно страшно, но для "рабора путей" с этим никто не будет заморачиваться. Поэтому мне было бы интересно, что может предложить BB.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 18 Октябрь, 2008 07:41 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Vlad писал(а):
Я читал. Но не от корки до корки, а интересные моменты ... Поэтому мне было бы интересно, что может предложить BB.


Страница 27 не оно?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 18 Октябрь, 2008 17:15 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Vlad писал(а):
Это не сильно страшно, но для "рабора путей" с этим никто не будет заморачиваться.

А для меня именно это и стало поводом. Затрепало писать мелкие строковые алгоритмы руками (циклы с разными играми индексами и т.п.). Доказывать "по Дейкстре" их оказалось неудобно (громоздко).
Стал решать конкретную задачу, захотел написать Рефал-0 сам на себе, понял, что инструмент гораздо шире, чем задумывался.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 20 Октябрь, 2008 15:29 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Иван Горячев писал(а):
Страница 27 не оно?


Да, именно то, что я хотел.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 12 Декабрь, 2008 10:17 

Зарегистрирован: Понедельник, 19 Март, 2007 09:40
Сообщения: 142
Откуда: USA, Israel, Belarus
Есть сомнения по поводу следующего генерируемого присваивания:
Процедура: RocotRefal0Back.GenProcess, ветка op: OutS:
Код:
   | op: OutS DO
            wr.String('out[r] := out[p]; INC(r); INC(p); ');
            IF op.next # NIL THEN wr.String('q := p; ') END

Возможно правильным должно быть: out[r] := in[p];
Кто то может это подтвердить/опровергнуть?

Спасибо.

Вообще прикольная штука.


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

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Да, это опечатка, спасибо. Исправлю и выложу новую версию.

Семантика инструкции строковой машины OutS описана в PDF-документе:
Цитата:
OutS: out[r] := in[p]; r := r + 1; p := p + 1 (перемещает один символ с in на out);


P.S. Опечатка коварная, т.к. если в качестве in и out используется один и тот же массив (а я делал в примерах именно так), то всё будет работать.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 13 Декабрь, 2008 01:53 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Опубликовал новую сборку пакета и консольного транслятора.
Бета-версия от 12.12.2008.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 18 Февраль, 2009 01:50 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
На сайте на днях пройдёт обновление...
Но пока ссылки даю здесь, а то "залежалось" уже.

06.07.2011 модератор: удалена неработающая ссылка

Очередная бета-версия. Исправлена одна ошибка при трансляции с применением предиката на символ, если символ в конце шаблона. Неверно рассчитывалось смещение от регистра АСМ, далее срабатывал ASSERT - "стопор ошибки" (и каждый раз не нарадуешься, что такие стопоры поставил когда-то :) ).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 24 Февраль, 2010 12:31 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
Лишь поверхностно прошёлся по документации Rocot, ибо для меня кратким обзором возможностей 60-страничный документ не является.

  1. Чтобы людям было проще ознакомиться с возможностями Rocot, предлагаю создать презентацию (Ms Power Point / OpenOffice Impress), выкладывая на общее обозрение документ PDF с размером до 12 страниц. В ней должны быть простые диаграммы, блок-схемы, рисунки и меньше текста. Нужна зрительная информация. "Лучше один раз увидеть, чем сто раз услышать". На мой взгляд, количество текстовой информации в документации затрудняет восприятие доносимого ею сообщения.
    Документация же нужна для тех, кого презентация заинтересует и тот захочет ознакомится с Rocot плотнее.
  2. Насколько я понял, Rocot можно сравнить с утилитой GNU awk, задачей которой является трансформация текста в соответствие с правилами, указанными командами особого скриптового языка. Только отличие в том, что мне удобнее использовать именно awk, потому что не нужно ничего компилировать. Я просто задам файл на входе и команды-скриптом, всё в одной строке консольной команды. А на выходе получу обработанный текст, а не Си-Оберон.
    Поэтому предлагаю вам создать (как минимум) консольную программу для обработки текстов. А лучже создать API-интерфейс к библиотеке для доступа внешними средствами (КП + классическими C, Delphi и т.д.), при помощи которых можно создавать GUI, использующих этот компонент.


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

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Консольная программа имеется.
06.07.2011 модератор: удалена неработающая ссылка

В остальном - опубликовано на усмотрение желающих.. Как публичный продукт внутренних производственных процессов.

Никаких обязательств. И никакой рекламы тоже.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 24 Февраль, 2010 13:38 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Илья Ермаков писал(а):
Консольная программа имеется.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 24 Февраль, 2010 13:46 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
Я писал про то, что было бы удобнее получать не трансляцию в исходный текст программы-обработки, а в конечный результат обработки текста, минуя этап трансляции.

добавлено:
На сегодняшний день для обработки текста практически повсеместно используется Perl благодаря его широким возможностям. Также gawk: чаще всего используют для околосистемных операций над текстовыми данными в различных скриптах.

добавлено+1:
Мне только не понятен один момент: какой смысл писать транслятор в языки Си и Оберон, если скрипты являются лишь снимком определённой задачи в некоторый момент времени?
Целью системы Рокот является трансляция в языки программирования для того, чтобы скомпилировать их в программы, выполняющие одну единственную задачу, требующую многократного исполнения? Мне что-то сложно представить для каких целей это может понадобиться. Ведь изо дня в день мы решаем какие-то конкретные задачи, одна непохожая на другую, или отличающуюся в деталях.
Часто приходится применять регулярные выражения, потому что задачи - разные. Вижу смысл только в решении высокопроизводительных задач на некоторые случаи. Иначе - чем хуже тот же Перл?


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

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Цитата:
Мне только не понятен один момент: какой смысл писать транслятор в языки Си и Оберон, если скрипты являются лишь снимком определённой задачи в некоторый момент времени?
Целью системы Рокот является трансляция в языки программирования для того, чтобы скомпилировать их в программы, выполняющие одну единственную задачу, требующую многократного исполнения? Мне что-то сложно представить для каких целей это может понадобиться.


Для чего нужны генераторы сканеров и парсеров (Лексы-Флексы, Яки-Бизоны).


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 48 ]  На страницу 1, 2, 3  След.

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


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

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


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

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