Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как построить конечний автомат для RegEx? 
:(
    Опции темы
unkis
  Дата 17.10.2007, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 802
Регистрация: 8.9.2004

Репутация: нет
Всего: 1



Привет всем! У меня такая проблема, мне надо построить конечный автомат по определенному RegEx, к примеру по этому. "(df)*(baf*b+)+"
Как вообще строятся такие автоматы, может есть готовый пример кода?


--------------------
www.unkis.com
PM MAIL WWW   Вверх
Platon
Дата 17.10.2007, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



Мне тоже такая задачка интересна. Это ключ к решению задачи многослойного BB-кода.
PM MAIL ICQ   Вверх
nornad
Дата 17.10.2007, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Если можно, опиши подробнее суть проблемы. Что должен делать этот твой автомат? Если всего лишь принимать состояние "подошло"/"не подошло", то зачем вообще автомат? Оборачивание в новый класс особо код не уменьшит.


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
chief39
Дата 17.10.2007, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 15
Всего: 77



Цитата(nornad @  17.10.2007,  16:47 Найти цитируемый пост)
Что должен делать этот твой автомат? 

Исполнять логику конкретного регекспа.

Цитата(nornad @  17.10.2007,  16:47 Найти цитируемый пост)
Оборачивание в новый класс особо код не уменьшит. 

Не оборачивание, а замена на вылизанный до состояния конечного автомата код. Причём, я так понимаю, автоматически. smile

На всяк случай(мало ли)
Конечный автомат


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

Добавлено через 5 минут и 54 секунды
Ты не об этом: Конечный автомат?

Тока не бейте  smile 



--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
nornad
Дата 17.10.2007, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(chief39 @  17.10.2007,  20:58 Найти цитируемый пост)
Тока не бейте

Забавная ...педия. smile

Цитата(chief39 @  17.10.2007,  20:58 Найти цитируемый пост)
Исполнять логику конкретного регекспа.

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


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
chief39
Дата 17.10.2007, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 15
Всего: 77



Цитата(nornad @  17.10.2007,  18:54 Найти цитируемый пост)
В плане - заменить стандартный регэксп на свою реализацию что ли? Что-то я пока не понимаю, что же требуется автору. 

Ну... как бы... 
Примерно так попробую объяснить суть КА:
есть конституция, законы и постановления. Учишь их все. И по входящему запросу принимаешь решение: накладываешь логику конституции, накладываешь логику законов и накладываешь логику постановлений/указов. Получается некий алгоритм, по которому мы приходим к детерминированному решению.
А если это всё, грубо говоря, "оптимизировать", то есть вместо абстрактного х*2*2/4*3 сделать x*3 - выйдет КА.
То есть, нечто вроде тупой интструкции для ресепшна: пришёл такой запрос - в такую папку, пришёл такой - в такую. Без всяких просчитываний законов и конституции на приёмке.

Добавлено через 6 минут и 23 секунды
Ещё грубее говоря:
У тебя есть БД словарная со списком стран и языков. Есть датабэйс слой некий. ОРМка, бизнес логика для этого всего и интерфейс програмный для клиентских приложений.
Но. Если набор стран и языков стабилен(в контексте задачи) - то можем упростить всё до состояния конечного автомата:
если идёт вот такой запрос с клиента - отдать вот такое. Если такое - строго такое отдать.
Трудно объяснить так... У нас очень хорошо освещали. И очень хорошо видно на триггерах, логических схемках при их оптимизации. Чувствуешь саму суть, дух КА smile))


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
nornad
Дата 18.10.2007, 01:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Ну, в общем, идея КА стала понятнее, хотя я пока всё равно ен понимаю, чего же хочет автор. smile
В смысле, что должен делать КА, построенный по регэкспу?

Добавлено через 1 минуту и 1 секунду
Вот оно где выплыло, непрограммерское образование. smile


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
LSD
Дата 18.10.2007, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(nornad @  18.10.2007,  02:49 Найти цитируемый пост)
В смысле, что должен делать КА, построенный по регэкспу?

Тут два варианта он должен принимать последовательность которая соответсвует регекспу, и отвергать ту которая не соответсвует. Или принимать последовательность которая содержит подмножество символов, которые соответсвуют регекспу.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0741 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.