OnionGrief / Chipollino

преобразования регулярных выражений и конечных автоматов
Other
19 stars 4 forks source link

Sem det log #250

Closed Robby-the-paladin closed 8 months ago

Robby-the-paladin commented 1 year ago

Добавлены логи на semdet

Robby-the-paladin commented 1 year ago

Последний фикс про производную в размеченном regex

Robby-the-paladin commented 1 year ago

https://github.com/StarikTenger/Chipollino/pull/250#pullrequestreview-1272048687 Оказалось, что при попытке построить префикс по автомату использовался только первый переход из состояния. Сейчас на указанных примерах не падает.

Robby-the-paladin commented 1 year ago

Багфикс: раньше annote не снимался после нахождения префиксов и semdet работал на аннотированном автомате.

Robby-the-paladin commented 1 year ago

Поправлены шаблоны

TonitaN commented 1 year ago

Всё упало:

N = SemDet.Thompson {a|a} !!
TonitaN commented 1 year ago

Логи нужно поправить.

Я поправила логи, как они должны примерно выглядеть (чтобы не потерять вашу мысль, но согласовать всё с остальными):

    auto make_string_transition = [=](int from, alphabet_symbol through,
                                      int to) {
        string f = std::to_string(from);
        string arrow = ">->>{" + string(through) + "}";
        string t = std::to_string(to);
        return f + arrow + t;
    };

Без перехода в мат.режим и без его фишек. В такой версии собираются оба документа. Только ещё нужно передавать реальные имена состояний автомата, а не просто их номера, чтобы логи согласовывались друг с другом.

TonitaN commented 1 year ago

Так что ваша задача:

После этого опять буду смотреть.

Robby-the-paladin commented 1 year ago

https://github.com/StarikTenger/Chipollino/pull/250#issuecomment-1407225499 У нас почему-то в автомате Томпсона переходы по эпсилону обозначаются через symbol = 'eps', а при попытке сделать to_regex эпсилон превращается в конкатенацию символов e, p, s