[Ruby] Re: [Ruby] Re: [Ruby] Re: [Ruby] призыв ;-)

Olonichev Sergei olonichev at scnsoft.com
Thu Oct 10 11:48:24 MSD 2002


----- Original Message -----
From: "Alexander Bokovoy" <a.bokovoy at sam-solutions.net>
To: <ruby at altlinux.ru>
Sent: 9 октября 2002 г. 18:34
Subject: Re: [Ruby] Re: [Ruby] Re: [Ruby] призыв ;-)


> On Wed, Oct 09, 2002 at 05:52:11PM +0300, Olonichev Sergei wrote:
> > > > По моему Libero к библиотеке FST имеет отдаленное отношение, или я
> > что-то не
> > > > понял?
> > > Тогда я не понял. В письме Юры идет речь о конечных автоматах. Libero
> > > представляет собой среду, позволяющую по описанию FSM генерировать
код,
> > > реализующий описанный конечный автомат на конкретном языке.
> >
> > Это хорошо будет работать только в случае небольших диаграмм
(автоматов).
> > Но как например, будет реализован поиск дуги по которой нужно
осуществить
> > переход, при помощи оператора case, линейно или логарифмически или еще
как?
> > А сколько при этом автомат будет занимать в памяти?
>  Libero генерирует таблицу переходов между состояниями (и
последовательность
> вызовов функций внутри состояния). То есть, исполнение автомата
заключается
> в итерировании этой таблицы переходов. Вот типичный код на C (заранее
прошу
> прощения у тех, кто незаинтересован), здесь реальный код машины начинается
с
> _LR_state = 0:

...

> Размер элементов (где неуказано) -- в базовой конфигурации для генератора
на язык С
> используется unsigned short (1 байт). Естественно, это очень условное
> ограничение -- все зависит от используемой схемы трансляции. Например, в
> схемах, реализующих трансляцию в Perl, awk, shell, PHP, Rex, SQL, для
> хранения переходов состояний и действий используются строки.
>
> > По-моему языки программирования не предназначены для представления
> > больших графов, с точки зрения обработки значительно выгоднее автоматы
> > (трансдьюсеры и др.) представлять в виде графов и дальше уже их
> > обрабатывать на Ruby, С или любом другом языке.
> Так в Libero и реализовано. Посмотри.

Большое спрасибо, за ссылку. Я посмотрел данную систему.
Извиняюсь за настырность, но всетаки Libero - это не библиотека построения и
обработки FSM.

Libero - это:
1. Формализм для представления _детерминированных_ автоматов с действиями на
дугах
2. Генератор интерпретатора на многие языки (в этом ее основное свойство)

Для построения приложений описывающих соббытия внутри _ограниченной_ модели
реального мира наверное этого достаточно.
Но для задач обработки текста, разработки тогоже парсера (естественного
языка, а не иск.) Libero подходит едвали - хотя бы потому, что пользователь
вынужден строить _детерминированную_ диаграмму переходов.

Почему Libero нельзя называть библиотекой обработки FSM:
1. Нет алгоритмов обработки FSM: детерминизации, минимизации, удаления
спонтанных переходов и др.
2. Различных структур для хранения FSM в памяти тоже нет (предлагается один
вариант)


С уважением,
Сергей










More information about the Ruby mailing list