Замечания по блоку формальных языков
Originally reported on Google Code with ID 196
Получилось так, что мы примерно одной проблемой занялись одновременно. Посмотрел ваши
коммиты, мои мне нравятся больше - сравните...
0. Теперь это надо аккуратно слить, оставив мой вариант - сможете?
Еще замеченные проблемы:
1. Рефакторинг: стоит заменить в анализаторах и ошибках массивы лексем на объекты processed_string
(чем каждый раз их создавать, когда надо). Для правильного ответа генерируем из БД,
для проверяемого - из строки.
2. processed_string::node_descriptions_list должна бы проверять заполнение полей $this->tableid
и $this->tablename: мало ли как строка была создана; кроме того отступы в ней нарушают
правила форматирования
3. Свободные функции block_formal_langs_octal_to_decimal_char и шестнадцатиричный аналог
дублированы в коде языков С и С++ - вынести в общий подключаемый файл... Это еще и
фаталками чревато при подключении обоих языков.
4. Реализовать lexem_name() для userdefined языков - видимо понадобится добавить поле
в БД.
Reported by oasychev
on 2013-05-16 09:48:03
Comments (16)
-
reporter -
reporter Обратите внимание на последний коммит в блоке формальных языков. Там введен класс очень удобный для рефакторинга и дальнейшей работы (Мария - как видите, в него должна перейти функция построения корректированной строки). Дмитрий - советую посмотреть и использовать его объекты при реализации пункта 1. Я не вижу другого способа разместить код, определяющий как показать пользователю лексему, т.к. в зависимости от обстоятельств он может браться из разных строк. Объясню на консультации подробней...
Reported by
oasychev
on 2013-05-19 19:04:26 -
reporter Дмитрий - с рефакторингом прошу не тянуть, т.к. он нужен Бирюковой для интеграции кода.
Reported by
oasychev
on 2013-05-21 15:43:45 -
Account Deleted А зачем в последнем коммите test_is_same убран и заменен всего на один ассерт? Там бы побольше тестов надо, мне кажется.
Reported by
mamontov.dp
on 2013-05-21 19:07:11 -
Account Deleted Попробовал исправить 1. Все работает, но насколько корректно исправил - прошу оценить.
Reported by
mamontov.dp
on 2013-05-22 06:25:07 -
reporter Там test_is_same переименован был, а не убран - чтобы на каждую мелкую функцию класса отдельный файл не заводить...
Reported by
oasychev
on 2013-05-22 15:25:18 -
reporter 1. В первом приближении вроде верно, только надо будет на примерах разобрать, куда должен вести $responseindex - в corrected или в compared (которая есть настоящая response) - на примерах ситуаций с лишними и пропущенными разделителями. Или возможно его для sequence_mistakes надо переименовать в correctedindex, т.к. seqence_analyzer работает только с исправленной строкой. 2-4 вроде мелочи, можно быстро сделать.
Reported by
oasychev
on 2013-05-23 09:16:53 -
reporter У меня после рефакторинга не запускается вопрос для preview - вылетает фаталка, вызванная обращением к node_description нулевой по номеру лексемы на пустой строке, созданной не из базы. Notice: Undefined offset: 0 in Z:\home\moodle\www\blocks\formal_langs\tokens_base.php on line 963 Fatal error: Call to a member function value() on a non-object in Z:\home\moodle\www\blocks\formal_langs\tokens_base.php on line 963 Обратите внимание на созданный класс опций, я не хочу часто редактировать все заголовки если еще понадобятся настройки. Возможно его стоит ввести и в is_same.
Reported by
oasychev
on 2013-05-24 08:53:41 -
Account Deleted Не полностью исправленную версию закомиттил, извините. Сейчас вытолкнул исправление для блока формальных языков.
Reported by
mamontov.dp
on 2013-05-25 07:02:10 -
reporter А чего не сливаем мои изменения? Последний коммит может и к вам отношение иметь...
Reported by
oasychev
on 2013-05-26 16:47:48 -
Account Deleted Попробовал исправить, должно работать.
Reported by
mamontov.dp
on 2013-07-19 05:25:24 - Status changed:Fixed
-
reporter Давайте подумаем: если запрашивают has_description а таблицы в БД нет - надо выкидывать исключение или возвращать false? Ведь описания нет... В некоторых случаях это может быть полезно. Поэтому пока не закрываю...
Reported by
oasychev
on 2013-07-19 14:42:45 -
Account Deleted Я думаю, что если поля неверны, это в любом случае ошибка. Есть ли какие случаи, когда это полезно?
Reported by
mamontov.dp
on 2013-07-19 16:05:53 -
reporter Ну вот если строка не из БД и в принципе не имеет описаний, должна ли функция has_description возвращать ложь (описания нет) или выкидывать ошибку?
Reported by
oasychev
on 2013-07-22 11:45:20 -
Account Deleted Я думаю, что бросать исключение, т.к. получение описания уже так делает и это во многом родственные функции. Если возникнут такие ситуации, переделаем.
Reported by
mamontov.dp
on 2013-07-22 12:07:24 -
reporter Это было сделано раньше, когда описание само еще не подставляло текст. Будем думать - последующие задачи покажут, как лучше.
Reported by
oasychev
on 2013-07-22 13:28:32 - Status changed:Done
- Log in to comment
Reported by
oasychev
on 2013-05-16 15:22:55