Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pump length #169 #220 #243

Open
wants to merge 30 commits into
base: main
Choose a base branch
from
Open

Pump length #169 #220 #243

wants to merge 30 commits into from

Conversation

Robby-the-paladin
Copy link
Collaborator

Исправлены баги:

  • баг с неправильным определением префиксов для конечных регулярных выражений
  • баг с определением длины накачки по первому префиксу
  • баг с отсечением по первому не накачиваемому инфиксу
    Добавлен шаблон по накачке.

@xendalm
Copy link
Collaborator

xendalm commented Jan 25, 2023

Все еще не могу дождаться результата
#169 (comment)

@xendalm
Copy link
Collaborator

xendalm commented Jan 25, 2023

При накачке (((a)|a)*)* выдает Regex::from_string() ERROR почему-то
(a)*(|)(a|a)*((a|a)*)* эту регулярку не принял

@xendalm
Copy link
Collaborator

xendalm commented Jan 25, 2023

Для a*a цикл поиска заходит слишком далеко и не останавливается

@xendalm xendalm marked this pull request as draft January 25, 2023 20:40
@Robby-the-paladin
Copy link
Collaborator Author

a*a работает. (a)*(|)(a|a)*((a|a)*)* эту регулярку не принимает парсер, потому что парсер в принципе не принимает конструкции (|).

@Robby-the-paladin Robby-the-paladin marked this pull request as ready for review January 26, 2023 03:00
@Robby-the-paladin Robby-the-paladin changed the title Pump length (#169, #220) Pump length #169 #220 Jan 26, 2023
@mathhyyn mathhyyn changed the base branch from logger-pain to logger-tables January 26, 2023 19:10
Copy link
Collaborator

@TonitaN TonitaN left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ошибка на regex.from_string наводит на мысль, что надо бы поискать рефал-стиль (его и искать не надо, он на поверхности)

X = PumpLength {(ab|bb)*(aa|ab)} !!

Или даже так:

X = PumpLength {aaa} !!

А так длина накачки равна 1 (???):

X = PumpLength.Linearize {aaa} !!

После рефакторинга алфавита брать префиксы строк - не лучшая идея.

@Robby-the-paladin
Copy link
Collaborator Author

Robby-the-paladin commented Jan 27, 2023

Теперь префиксы накачиваются по alphabet_symbol, а не по char.

@TonitaN
Copy link
Collaborator

TonitaN commented Jan 27, 2023

Но почему-то всё ещё рефал-стиль падает.

@Robby-the-paladin
Copy link
Collaborator Author

#243 (review)
На этих 3 тестах выдаёт 3, 4, 4 соответственно. (((a)|a)*)* на этом тесте (|) конструкция возникает на этапе производной, после выделения a, поэтому падает

@Robby-the-paladin
Copy link
Collaborator Author

Теперь работает на тесте (((a)|a)*)*.

@TonitaN
Copy link
Collaborator

TonitaN commented Jan 27, 2023

#243 (review) На этих 3 тестах выдаёт 3, 4, 4 соответственно. (((a)|a)*)* на этом тесте (|) конструкция возникает на этапе производной, после выделения a, поэтому падает

Почему же у меня было так, если у вас всё ок?
rendered_report.pdf

@TonitaN
Copy link
Collaborator

TonitaN commented Jan 27, 2023

И вот так:

Chipollino :-)
opening file test.txt
file opened
|  running "X = PumpLength {a*} !!"
|  |  scanning
|  |  |  building function sequence
|  |  |  |  PumpLength (type: {Regex} -> Int)
|  |  
|  |  Running declaration...
|  |  |  Evaluating expression "(PumpLength {a*})"
|  |  |  |  evaluating function sequence
|  |  |  |  |  Evaluating expression "{a*}"
|  |  |  |  |  running function "PumpLength"
|  |  |  |  function sequence evaluated
|  |  assigned to X
|  
|  running "X = PumpLength {aaa} !!"
|  |  scanning
|  |  |  building function sequence
|  |  |  |  PumpLength (type: {Regex} -> Int)
|  |  
|  |  Running declaration...
|  |  |  Evaluating expression "(PumpLength {aaa})"
|  |  |  |  evaluating function sequence
|  |  |  |  |  Evaluating expression "{aaa}"
|  |  |  |  |  running function "PumpLength"
Regex::from_string() ERROR

Regex.cpp за 26.01.23 , 22:09

@Robby-the-paladin
Copy link
Collaborator Author

#243 (comment)
До merge с semdet log, была обработка по string префиксам и в конце мог добавляться eps символ в скобках, после merge обработка через alphabet symbol prefix и сейчас не падает.

@TonitaN
Copy link
Collaborator

TonitaN commented Jan 27, 2023

Регулярка:
(aa | bb)(ba)∗ | a∗b
Куда-то делся накачиваемый префикс bba, хотя он не содержит других накачиваемых префиксов.

@TonitaN
Copy link
Collaborator

TonitaN commented Jan 27, 2023

Регулярка

a(b |)(aa∗ |)∗(b | a)

Нашлись префиксы aaa и aba, но почему-то префикс abb проигнорирован в логах (длина накачки причём 4, т.е. вычислена с его учётом)

@TonitaN
Copy link
Collaborator

TonitaN commented Jan 28, 2023

Рефал-стиль передаёт привет:

    Регулярное выражение:
	eps,2a|eps,1a%template_oldregex

	Длина накачки:
    5%template_pumplength1 % founded pump len

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

@TonitaN
Copy link
Collaborator

TonitaN commented Jan 28, 2023

Пока не обнаружено багов, кроме как в логах и с тем, что у всех лагает (у меня оно в рендеринге тоже лагало). Принимаю как исправление, но нужно поправить логи (накачиваемые префиксы) и ещё потестировать когда-нибудь.

@Robby-the-paladin
Copy link
Collaborator Author

Robby-the-paladin commented Jan 28, 2023

#243 (comment)
Префикс abb, как и префикс aab не накачиваются, но любое слово длины 4 или больше на такие префиксы не начинаются, поэтому того что накачиваются префиксы aaa и aba достаточно.

@Robby-the-paladin
Copy link
Collaborator Author

#243 (comment)
Регулярка (aa | bb)(ba)∗ | a∗b распознаётся интерпретатором как альтернатива (aa | bb)(ba)∗ и a∗b в таком случае префикса bba нет в языке. Для регулярки (aa|bb)((ba)*|a*b) накачиваемые префиксы aaa, aaba, bba, bbba

Base automatically changed from logger-tables to main April 19, 2023 13:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: No status
Development

Successfully merging this pull request may close these issues.

4 participants