tel8618217223380 / oasychev-moodle-plugins

Automatically exported from code.google.com/p/oasychev-moodle-plugins
0 stars 0 forks source link

Правки, необходимые для корректной работы мержинга простых ассертов #280

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Для ^ и $:
1. Метод для определения, захватывает ли 
обратная ссылка символы, при построении.

Для \b:
1. Матчер не должен включать в длину 
совпадения символы из переходов с consumeschars == 
false
2. Матчятся почему то переходы типа [a!&] ⋂ \W с 
символом a, хотя не должны.

Original issue reported on code.google.com by eklepilkina@gmail.com on 6 May 2014 at 5:01

GoogleCodeExporter commented 9 years ago
1.1 - надо бы сделать, это недолго - Валерий?

2.1 - это отдельное issue - 114
2.2 - это вообще на баг смахивает... - отладить 
СРОЧНО

Original comment by oasyc...@gmail.com on 10 Jul 2014 at 6:31

GoogleCodeExporter commented 9 years ago
2.2 пофикшено. срочность на релиз не 
повлияла, ошибка никак не проявлялась на 
элементарных днф, какие были.

Original comment by vostreltsov@gmail.com on 12 Sep 2014 at 6:15

GoogleCodeExporter commented 9 years ago
2.1 вроде как сделал, оказалось просто. Надо 
теперь чтобы Лена пробовала свою часть.

Original comment by vostreltsov@gmail.com on 12 Sep 2014 at 6:40

GoogleCodeExporter commented 9 years ago
2.1 и 2.2   у меня не работают, ссылки на тесты 
есть тут 
https://code.google.com/p/oasychev-moodle-plugins/issues/detail?id=232#c6

Original comment by eklepilkina@gmail.com on 16 Nov 2014 at 11:41

GoogleCodeExporter commented 9 years ago
Так, нам нужно четко определиться какие 
классы за какую генерацию отвечают и какие 
параметры идут в какие методы.

Сейчас метод next_character добавился и в класс 
перехода. Если главный лист перехода не 
чарсет, он перенаправляет вызов в узлы и 
всё хорошо, иначе начинается дикая 
заморочка с проверкой ассертов и в 
переходе, и в листе - это необходимо 
упростить.

Я сейчас выделил метод next_character_ranges в листе 
чарсета. Просто чтобы работало. Он на себя 
берет генерацию "желаемого символа". В 
порядке приоритета это 1) оригинальный 
символ, если таковой был в первоначальной 
строке на этом же месте 2) ascii-буква 
латинского алфавита 3) пробел для случаев \s 
- он красивее табуляции. Как мне кажется, 
придётся перенести эту логику на уровень 
перехода, потому что переходу нужно знать 
отрезки для проверки ассертов, а 
манипуляции с желаемыми отрезками в 
чарсете могут выкинуть часть оригинальных 
отрезков. Согласны?

Как мне кажется, нужно
1) сделать next_character чарсета максимально 
тупой заглушкой, он все равно не нужен
2) убрать из чарсета next_character_ranges, который 
занимался логикой желаемого символа. в 
чарсете по-прежнему остается обычный метод 
ranges.
3) переход теперь берет на себя 
ответственность за желаемый символ и 
проверку всех(!) ассертов, а не как сейчас: ^ 
и $ на уровне чарсета, остальные на уровне 
перехода.

Остается вопрос с обратной ссылкой, но там 
вроде просто. Она всегда возвращает кусок 
строки какой ей нужен, а ассерты проверятся 
на уровне переходов. Итого, вся логика 
ассертов будет только в транзишене.

Original comment by vostreltsov@gmail.com on 16 Nov 2014 at 9:32

GoogleCodeExporter commented 9 years ago
Честно говоря не уверен в таком подходе.
Во-первых, главным листом должен быть 
именно чарсет, это нормальная ситуация - 
именно к нему мержаться ассерты.
Во-вторых, при генерации нет ничего 
странного сначала обратится к ассертам 
(которые вполне себе в состоянии 
сгенерировать допустимые диапазоны 
символов (либо же невозможность генерации, 
либо ends_there) - для ^ или $ это вообще будет 
либо невозможность, либо перевод строки. А 
потом он пересекается с тем, что 
сгенерировано обычным чарсетом.

Original comment by oasyc...@gmail.com on 16 Nov 2014 at 9:37

GoogleCodeExporter commented 9 years ago
1) понятно, но есть всякие обратные ссылки 
или ассерты по краям. вообще, этот пункт - не 
суть
2) ок, я про то, что нужно это делать в методе 
транзишена. вызвать генерацию и для 
ассертов, и для главного перехода, а потом 
пересечь. в конце попробовать пересечь с 
желаемыми диапазонами.

собственно вопрос в том, что не нужно 
параметризовать next_character листов булевыми 
значениями $dollar и $circumflex как это сейчас 
делается

Original comment by vostreltsov@gmail.com on 16 Nov 2014 at 9:41

GoogleCodeExporter commented 9 years ago
Решили что генерация в листьях должна 
возвращать диапазоны, а переход уже их 
пересекает и генерирует конкретный символ.

Original comment by oasyc...@gmail.com on 16 Nov 2014 at 9:46

GoogleCodeExporter commented 9 years ago
Это сделано? Или проблемы еще остались?

Original comment by oasyc...@gmail.com on 3 Dec 2014 at 12:38

GoogleCodeExporter commented 9 years ago
Issue 286 has been merged into this issue.

Original comment by oasyc...@gmail.com on 3 Dec 2014 at 12:39

GoogleCodeExporter commented 9 years ago

Original comment by vostreltsov@gmail.com on 3 Dec 2014 at 8:40