LINUX.ORG.RU

Трассировка конечных автоматов с помощью FSMD


0

0

К инструментам FSME (Finite State Machine Editor) и FSMC (Finite State Machine Compiler) добавился третий - FSMD (Finite State Machine Debugger). Пока ещё не сделал ни одного файлового релиза - фич маловато - но с примерчиками работает.

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

Слева под окнами - FSME с открытым примерчиком

Справа - окно отладки этого примерчика.

Активное окно - сам примерчик,

Справа снизу - список обнаруживших себя автоматов

Желающим попробовать это хозяйство - http://sf.net/projects/fsme, берите из CVS. Примерчики в Download.

>>> Просмотр (1280x1024, 194 Kb)

★★★★

Проверено: Dimez ()

Здорово... А можно просветить зачем и для чего это можно применять на практике? Введение в теорию автоматов и регулярных языков - читал, но практического применения так и не могу придумать... Если можно - с примерами.

xlex
()
Ответ на: комментарий от xlex

практическое использование? почти никакого. разве что, FA определяются все реккурисивные функции. далее, надеюсь, объяснять не надо..

o1o
()

Новый браузер AOL основанный на IE

А есть-ли что-нибудь подобное для рисования компьютерных сетей. Именно скриптом или чем-то вроде VRML или XML?

los_nikos ★★★★★
()
Ответ на: комментарий от o1o

Практическое применение - любая задача, которая требует 100% надежности.

anonymous
()
Ответ на: комментарий от o1o

>практическое использование? почти никакого. разве что, FA определяются все реккурисивные функции. далее, надеюсь, объяснять не надо.

Алан Кокс считает иначе. ;)

jackill ★★★★★
()
Ответ на: комментарий от anonymous

>применица это может в учебном процессе, для лаболаторных работ

Я тоже так думал. Сейчас из моей группы программированием занимается человека четыре и вряд ли кому-то нужны автоматы. Но мне пригодилось 200% из того, что преподавали (вплоть до философии ;-)

Область применения - синтаксические анализаторы: компиляторы, командная строка, shell etc. В обычном проекте это может быть обработка полей ввода. Поэтому очень часто их использую, хотя не так дотошно как на лабораторке :-) однако не раз приходилось и рисовать их подробно, чтобы представить себе всю картину

GladAlex ★★★★★
()
Ответ на: комментарий от xlex

Вообще-то в схемотехнике (дискретной) КА отовсюду лезут. Правда, разработка устройств, более сложных, нежели учебные, обычно производится с помощью САПРов, которые эти КА сами генерят (точнее, там до уровня КА разработчик просто не опускается).

Но все равно иногда возникает необходимость сделать автоматик-другой.

anonymous
()
Ответ на: комментарий от xlex

>А можно просветить зачем и для чего это можно применять на практике?

Один из примеров - сам этот отладчик и редактор. Там кстати несколько автоматов.

Потом - практически любая система, которую можно представить как несколько режимов+правила перехода. Например - банкомат (экран - состояние, кнопки - правила перехода, оно, кстати, с помощью спец. КА и реализуется в основном)

Регексы и грамматики - очень узкая специализация, и в явном виде для них схемы никто не рисует :)

PS. я ещё маленькие примерчики писал - на C++ (калькулятор этот) и на питоне - жирафов и бегемотов в холодильник пихать под автоматом :-) В Download на SF есть

adarovsky ★★★★
() автор топика
Ответ на: комментарий от GladAlex

>Я тоже так думал. Сейчас из моей группы программированием занимается человека четыре и вряд ли кому-то нужны автоматы.

Сначала они отбиваются, а потом как параноик смотришь на задачу - и автоматы лезут отовсюду :-)

А серьёзно - привыкаешь логику работы рисовать. Очень удобно.

adarovsky ★★★★
() автор топика
Ответ на: Новый браузер AOL основанный на IE от los_nikos

А зачем подобное? Просто рисовать DIA умеет. Тоже в XML её диаграммы хранятся. И набор картинок для сетей там вроде есть.

adarovsky ★★★★
() автор топика
Ответ на: комментарий от anonymous

>Вообще-то в схемотехнике (дискретной) КА отовсюду лезут. Правда, разработка устройств, более сложных, нежели учебные, обычно производится с помощью САПРов, которые эти КА сами генерят (точнее, там до уровня КА разработчик просто не опускается).

И это правильно :-) Когда regex пишешь или BNF грамматику автомат тоже флексы и бизоны генерят. Там на количество состояний глянешь - плохо станет :)))

>Но все равно иногда возникает необходимость сделать автоматик-другой.

Ага. Причём куча вещей сводится к КА. Например, модель унитаза и media player :)

adarovsky ★★★★
() автор топика
Ответ на: комментарий от xlex

Существую методика программирования, основанная на конечных автоматах. Что-то типа программа рассматривается в виде конечного числа возможных состояний.

hdlc
()
Ответ на: комментарий от adarovsky

>и на питоне - жирафов и бегемотов в холодильник пихать под автоматом :-)

Не. Ни жирафы ни бегемоты в холодильник ни под автоматом, ни под пулеметом не полезут. Тут надо пнуть. ;)

smartly ★★★
()
Ответ на: комментарий от smartly

или прикладом :) Автомат - вещь многоликая :)

adarovsky ★★★★
() автор топика
Ответ на: комментарий от anonymous

1. Желательно взять последние версии с CVS. Я их там чинил утром, к вечеру должно бы обновиться (anonymous CVS там с задержкой часов в 6)

cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/fsme login

cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/fsme co fsme

cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/fsme co fsmc

cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/fsme co fsmd

cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/fsme co examples

2. Более-менее новый Qt (>=3.2.x). Если будет ругаться, что не знает QSyntaxHighighter, значит, надо обновить Qt. От этого ничего не сломается, можно смело обновлять

3. C++ >=3.3.x. В нём менялся STL. Расширения C++ перенесены в ext/, у меня они используются.

Вроде всё. Счастливой компиляции. Если что - на странице проекта можно написать bug report. Если модераторы не возражают, можно и сюда.

http://fsme.sf.net - страничка с документацией.

adarovsky ★★★★
() автор топика
Ответ на: комментарий от adarovsky

PS. В FSME я делал пробное сглаженное рисование стрелочек с помощью cairo. В diagram/diagram.pro написано, как его включить, если охота поиграться. Cairo можно взять с http://freedesktop.org

adarovsky ★★★★
() автор топика
Ответ на: комментарий от adarovsky

а посоветуй, где про это почитать можно (применение КА на практике программирования/унитазостроения/слонопихания)? Оч интересно :)

uj2 ★★★
()
Ответ на: комментарий от uj2

>а посоветуй, где про это почитать можно (применение КА на практике программирования/унитазостроения/слонопихания)? Оч интересно :)

Есть кника Шалыто "Switch-технология", но её не сильно интересно читать.

Для использования в регулярных выражениях - драконовская книга - "The Dragon Book", теория построения компиляторов.

В книжках про UML будут диаграммы поведения - почти то же самое, что и КА

Чтобы быстро посмотреть - http://fsme.sourceforge.net/doc/tutorial.html, по этому туториалу изготавливается холодильник с лампочкой. Там же примерчики.

Есть сайт такой - http://www.softcraft.ru, на нём автоматчики тусовались...

adarovsky ★★★★
() автор топика
Ответ на: комментарий от adarovsky

Респект :) Интересно. Сейчас по тех. причинам Linux нету:( восстановлю, обязательно посмотрю.

sleepflint ★★★
()
Ответ на: комментарий от adarovsky

Блин, я вот эгзамен завалил с теории компиляции, а проект семестральный+ на 5 написал во как...

linux_newbe
()

Кстати, сайт Шалыто на котором много примеров на использование автоматов (правда, не совсем обычных) - is.ifmo.ru

anonymous
()

[после двух литров пива] ёпта, автоматы наше светлое будущеее, все учить автоматы, ик...

anonymous
()

Спасибо всем за объяснения. Последний вопрос (может глупый...; до ссылок пока руки не дошли): я правильно понимаю, что автомат за меня будет генерить код? С/С++? В виде функции/класса?

xlex
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.