OberonCore
https://forum.oberoncore.ru/

Rocot - язык обработки текстов Рефал-0
https://forum.oberoncore.ru/viewtopic.php?f=90&t=1201
Страница 1 из 3

Автор:  Илья Ермаков [ Пятница, 17 Октябрь, 2008 08:25 ]
Заголовок сообщения:  Rocot - язык обработки текстов Рефал-0

Опубликованы бета-версии (от 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 ]
Заголовок сообщения:  Re: Язык обработки текстов Рефал-0. Подсистема ROCOT.

Прочитал описание компонент на сайте.
Никак не пойму: а какие проекты можно реализовать с помощью этих компонент? Какие типы задач они решают?

Автор:  Илья Ермаков [ Пятница, 17 Октябрь, 2008 17:49 ]
Заголовок сообщения:  Re: Язык обработки текстов Рефал-0. Подсистема ROCOT.

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

Почитайте PDF.

Автор:  Vlad [ Пятница, 17 Октябрь, 2008 18:47 ]
Заголовок сообщения:  Re: Язык обработки текстов Рефал-0. Подсистема ROCOT.

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


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

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

Автор:  Илья Ермаков [ Пятница, 17 Октябрь, 2008 19:31 ]
Заголовок сообщения:  Re: Язык обработки текстов Рефал-0. Подсистема ROCOT.

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

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

Автор:  Vlad [ Пятница, 17 Октябрь, 2008 20:50 ]
Заголовок сообщения:  Re: Язык обработки текстов Рефал-0. Подсистема ROCOT.

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


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

Автор:  Илья Ермаков [ Пятница, 17 Октябрь, 2008 20:55 ]
Заголовок сообщения:  Re: Язык обработки текстов Рефал-0. Подсистема ROCOT.

Влад, ну Вы PDF-статью-то читали?

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

Автор:  Vlad [ Пятница, 17 Октябрь, 2008 22:24 ]
Заголовок сообщения:  Re: Язык обработки текстов Рефал-0. Подсистема ROCOT.

Илья Ермаков писал(а):
Влад, ну Вы PDF-статью-то читали?


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

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


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

Автор:  Иван Горячев [ Суббота, 18 Октябрь, 2008 07:41 ]
Заголовок сообщения:  Re: Язык обработки текстов Рефал-0. Подсистема ROCOT.

Vlad писал(а):
Я читал. Но не от корки до корки, а интересные моменты ... Поэтому мне было бы интересно, что может предложить BB.


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

Автор:  Илья Ермаков [ Суббота, 18 Октябрь, 2008 17:15 ]
Заголовок сообщения:  Re: Язык обработки текстов Рефал-0. Подсистема ROCOT.

Vlad писал(а):
Это не сильно страшно, но для "рабора путей" с этим никто не будет заморачиваться.

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

Автор:  Vlad [ Понедельник, 20 Октябрь, 2008 15:29 ]
Заголовок сообщения:  Re: Язык обработки текстов Рефал-0. Подсистема ROCOT.

Иван Горячев писал(а):
Страница 27 не оно?


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

Автор:  slava [ Пятница, 12 Декабрь, 2008 10:17 ]
Заголовок сообщения:  Re: Язык обработки текстов Рефал-0. Подсистема ROCOT.

Есть сомнения по поводу следующего генерируемого присваивания:
Процедура: 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 ]
Заголовок сообщения:  Re: Язык обработки текстов Рефал-0. Подсистема ROCOT.

Да, это опечатка, спасибо. Исправлю и выложу новую версию.

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


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

Автор:  Илья Ермаков [ Суббота, 13 Декабрь, 2008 01:53 ]
Заголовок сообщения:  Re: Язык обработки текстов Рефал-0. Подсистема ROCOT.

Опубликовал новую сборку пакета и консольного транслятора.
Бета-версия от 12.12.2008.

Автор:  Илья Ермаков [ Среда, 18 Февраль, 2009 01:50 ]
Заголовок сообщения:  Re: Язык обработки текстов Рефал-0. Подсистема ROCOT.

На сайте на днях пройдёт обновление...
Но пока ссылки даю здесь, а то "залежалось" уже.

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

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

Автор:  Роман М. [ Среда, 24 Февраль, 2010 12:31 ]
Заголовок сообщения:  Re: Язык обработки текстов Рефал-0. Подсистема ROCOT.

Лишь поверхностно прошёлся по документации 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 ]
Заголовок сообщения:  Re: Язык обработки текстов Рефал-0. Подсистема ROCOT.

Консольная программа имеется.
06.07.2011 модератор: удалена неработающая ссылка

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

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

Автор:  Geniepro [ Среда, 24 Февраль, 2010 13:38 ]
Заголовок сообщения:  Re: Язык обработки текстов Рефал-0. Подсистема ROCOT.

Илья Ермаков писал(а):
Консольная программа имеется.

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

Автор:  Роман М. [ Среда, 24 Февраль, 2010 13:46 ]
Заголовок сообщения:  Re: Язык обработки текстов Рефал-0. Подсистема ROCOT.

Я писал про то, что было бы удобнее получать не трансляцию в исходный текст программы-обработки, а в конечный результат обработки текста, минуя этап трансляции.

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

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

Автор:  Илья Ермаков [ Среда, 24 Февраль, 2010 15:03 ]
Заголовок сообщения:  Re: Язык обработки текстов Рефал-0. Подсистема ROCOT.

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


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

Страница 1 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/