Анализ состояний строки в C++C++

Программы на C++. Форум разработчиков
Ответить
Гость
 Анализ состояний строки в C++

Сообщение Гость »


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

пример ввода данных i{OPEN}a{LOCKED}s{n{OPEN}t{i{PUSH}d{CLOSED}}t{i{PULL}d{OPEN}}t{i{ ПОВОРОТИТЬ}d{ОТКРЫТЬ}}}s{n{ЗАКРЫТЬ}t{i{PUSH}d{ЗАКРЫТЬ}}t{i{PULL}d{ОТКРЫТЬ}}t{i{TURN}d{LOCKED}}}s{ n{LOCKED}t{i{PUSH}d{LOCKED}}t{i{PULL}d{LOCKED}}t{i{TURN}d{ЗАКРЫТО}}}

s{...} описывает состояние. Вся информация, относящаяся к этому состоянию, находится внутри пары фигурных скобок.

s{ n{xxx}...}} внутри области состояния описывает имя состояния xxx.

s{ n{xxx} t{...}} внутри области состояния описывает переход из этого состояния в другое. Переходов состояния может быть несколько.

s{ n{xxx} t{i{...}...}} i внутри области перехода описывает входное значение для того, чтобы этот переход произошел.

s{ n{xxx} t{i{...} d{...}}} d внутри области перехода описывает состояние назначения этого перехода.

i{xxx} описывает имя начального состояния

a{xxx} описывает название принимающего государства

пытаемся разделить разные состояния следующим образом:

состояния разделения: s{n{OPEN}t{i{PUSH}d{CLOSED}}t{i{PULL}d{OPEN}}t{i{TURN}d{OPEN}}} состояния разделения: s{n{ЗАКРЫТО}t{i{PUSH}d{ЗАКРЫТО}}t{i{PULL}d{ОТКРЫТО}}t{i{TURN}d{LOCKED}}} состояния разделения: s{n{LOCKED}t{i{PUSH}d{LOCKED}}t{i{PULL}d{LOCKED}}t{i{TURN}d{CLOSED}}} d/i может быть где угодно в t

s{n{ЗАКРЫТО}t{d{ЗАКРЫТО}i{PUSH}}t{i{PULL}d{ОТКРЫТЬ}}t{i{TURN}d{ЗАБЛОКИРОВАНО}}} в первом t{} они переключаются в качестве примера

i/a также может находиться где угодно за пределами s{}, поэтому они могут находиться между двумя разными состояниями, поэтому я не могу ничего жестко закодировать

Переход класса { публика: станд::строковый ввод; std::строка назначения; Переход (std::string i, std::string d) { вход = я; пункт назначения = d; } }; класс государства { публика: std::имя строки; переходы std::vector; Состояние(std::string n) { имя = п; } void addTransition (ввод std::string, назначение std::string) { Переход переход(вход, назначение); переходы.push_back(переход); } недействительный дисплейИнформация() { // отображаем информацию об имени состояния и переходах для этого состояния std::cout
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»