Правки, необходимые для корректной работы мержинга простых ассертов
Issue #280
closed
Originally reported on Google Code with ID 280
Для ^ и $:
1. Метод для определения, захватывает ли обратная ссылка символы, при построении.
Для \b:
1. Матчер не должен включать в длину совпадения символы из переходов с consumeschars
== false
2. Матчятся почему то переходы типа [a!&] ⋂ \W с символом a, хотя не должны.
Reported by eklepilkina
on 2014-05-06 17:01:46
Comments (11)
-
repo owner -
2.2 пофикшено. срочность на релиз не повлияла, ошибка никак не проявлялась на элементарных днф, какие были.
Reported by
vostreltsov
on 2014-09-12 18:15:59 - Status changed:InProgress
-
2.1 вроде как сделал, оказалось просто. Надо теперь чтобы Лена пробовала свою часть.
Reported by
vostreltsov
on 2014-09-12 18:40:45 -
Account Deleted 2.1 и 2.2 у меня не работают, ссылки на тесты есть тут https://code.google.com/p/oasychev-moodle-plugins/issues/detail?id=232#c6
Reported by
eklepilkina
on 2014-11-16 11:41:25 -
Так, нам нужно четко определиться какие классы за какую генерацию отвечают и какие параметры идут в какие методы. Сейчас метод next_character добавился и в класс перехода. Если главный лист перехода не чарсет, он перенаправляет вызов в узлы и всё хорошо, иначе начинается дикая заморочка с проверкой ассертов и в переходе, и в листе - это необходимо упростить. Я сейчас выделил метод next_character_ranges в листе чарсета. Просто чтобы работало. Он на себя берет генерацию "желаемого символа". В порядке приоритета это 1) оригинальный символ, если таковой был в первоначальной строке на этом же месте 2) ascii-буква латинского алфавита 3) пробел для случаев \s - он красивее табуляции. Как мне кажется, придётся перенести эту логику на уровень перехода, потому что переходу нужно знать отрезки для проверки ассертов, а манипуляции с желаемыми отрезками в чарсете могут выкинуть часть оригинальных отрезков. Согласны? Как мне кажется, нужно 1) сделать next_character чарсета максимально тупой заглушкой, он все равно не нужен 2) убрать из чарсета next_character_ranges, который занимался логикой желаемого символа. в чарсете по-прежнему остается обычный метод ranges. 3) переход теперь берет на себя ответственность за желаемый символ и проверку всех(!) ассертов, а не как сейчас: ^ и $ на уровне чарсета, остальные на уровне перехода. Остается вопрос с обратной ссылкой, но там вроде просто. Она всегда возвращает кусок строки какой ей нужен, а ассерты проверятся на уровне переходов. Итого, вся логика ассертов будет только в транзишене.
Reported by
vostreltsov
on 2014-11-16 21:32:38 -
repo owner Честно говоря не уверен в таком подходе. Во-первых, главным листом должен быть именно чарсет, это нормальная ситуация - именно к нему мержаться ассерты. Во-вторых, при генерации нет ничего странного сначала обратится к ассертам (которые вполне себе в состоянии сгенерировать допустимые диапазоны символов (либо же невозможность генерации, либо ends_there) - для ^ или $ это вообще будет либо невозможность, либо перевод строки. А потом он пересекается с тем, что сгенерировано обычным чарсетом.
Reported by
oasychev
on 2014-11-16 21:37:02 -
1) понятно, но есть всякие обратные ссылки или ассерты по краям. вообще, этот пункт - не суть 2) ок, я про то, что нужно это делать в методе транзишена. вызвать генерацию и для ассертов, и для главного перехода, а потом пересечь. в конце попробовать пересечь с желаемыми диапазонами. собственно вопрос в том, что не нужно параметризовать next_character листов булевыми значениями $dollar и $circumflex как это сейчас делается
Reported by
vostreltsov
on 2014-11-16 21:41:25 -
repo owner Решили что генерация в листьях должна возвращать диапазоны, а переход уже их пересекает и генерирует конкретный символ.
Reported by
oasychev
on 2014-11-16 21:46:40 -
repo owner Это сделано? Или проблемы еще остались?
Reported by
oasychev
on 2014-12-03 00:38:12 - Status changed:Fixed
-
repo owner Issue 286 has been merged into this issue.
Reported by
oasychev
on 2014-12-03 00:39:15 -
Reported by
vostreltsov
on 2014-12-03 08:40:38 - Status changed:Done
- Log in to comment
Reported by
oasychev
on 2014-07-10 18:31:30 - Labels added: Priority-Critical, Component-Preg - Labels removed: Priority-Medium