Подсказки для mistakes from lexical_analyzer и вообще подготовка к релизу

Issue #337 closed
Oleg Sychev repo owner created an issue

Originally reported on Google Code with ID 337

a)typo_mistake
1) what_is - показывает текст лексемы. Код уже существует, нужно только проверить его
в смысле того, какую именно лексему он показывает - правильное написание или ошибочное
- раньше они были одинаковыми. Интересный вопрос, какое именно надо показать. Я за
ошибочное, иначе это уже подсказка как исправить. Могу взять на себя.
2) how_to_fix_pic - картинка с исправлением лексемы, можно ре-юзе из существующего
кода отрисовки большой картинки

b) лишний и пропущенный разделители
1) what_is - аналогично, показывает текст лексемы (лексем) в ошибочном написании. Могу
взять на себя.
2) how_to_fix_pic - показывает как склеить или разделить лексемы (надо ли?). Можно
ре-юзе из существующего кода большой картинки, только здесь уже обе строки показываются
- как склеивается или расходится на несколько лексема.

Других вариантов придумать не могу. Есть идеи?

Reported by oasychev on 2015-03-20 00:29:09

Comments (99)

  1. Oleg Sychev reporter
    wherepic на данный момент не работает вообще и картинку не генерирует
    
    whatis показывает текст из правильного ответа.
    

    Reported by oasychev on 2015-03-20 23:21:45

  2. Former user Account Deleted
    wheretxt как я понимаю тоже не работает. 
    
    При первой возможности постараюсь все поправить.
    

    Reported by mamontov.dp on 2015-03-21 06:03:02

  3. Oleg Sychev reporter
    C wheretxt проблем не обнаружил. Возможно нужны более хитрые тесты.
    

    Reported by oasychev on 2015-03-21 13:34:59

  4. Former user Account Deleted
    what_is пофикшено и сделано, чтобы для ошибки перемещения, описание бралось из ответа
    студента.
    Новую версию wherepic протестировал еще на перемещении и удалении, а так же вставке
    лишних лексем. Вроде проблем нет, все рисуется правильно.
    
    how_to_fix_pic будет позднее. Кстати, может выберем для нее более короткое название?
    А то в ограничение таблицы хинтов на 12 символов можем не влезть...
    

    Reported by mamontov.dp on 2015-03-30 19:58:30

  5. Oleg Sychev reporter
    what_is должна использовать ответ студента всегда кроме удаления, т.е. и для опечаток
    и  т.д. - не только для перемещения
    
    how_to_fix_pic можно конечно fix_pic наверное назвать. А в надписи уже "Hint how to
    fix typo" (или другой вид ошибки).
    

    Reported by oasychev on 2015-03-30 20:43:41

  6. Former user Account Deleted
    Она и использует теперь.
    

    Reported by mamontov.dp on 2015-03-31 06:08:19

  7. Former user Account Deleted
    Залил на edu.vstu.org свежую версию плагина из репозитория, которая включает в себя
    реализацию how_to_fix_pic .
    

    Reported by mamontov.dp on 2015-03-31 19:22:02

  8. Oleg Sychev reporter
    Потещу в ближайшие пару дней - редактировал статью Бирюковой, высплюсь - проверю.
    
    Дмитрий - вам пока просьба - помочь Бирюковой с экспериментом для статьи, там ничего
    не посчитано - надо прогнать ее код по БД ответов которые мы экспортировали и собрать
    статистику - сколько процентов ответов содержали опечатки, пропущенные разделители,
    лишние разделители. И т.д. По коду, идущему в релиз...
    

    Reported by oasychev on 2015-04-01 01:20:44

  9. Former user Account Deleted
    А можно меня тогда в соавторы её внести? Просто получается что часть материалов статьи
    готовил я...
    

    Reported by mamontov.dp on 2015-04-01 08:04:45

  10. Oleg Sychev reporter
    Я уже думал об этом. :)
    
    Но тогда вам еще помочь Маше с поиском необходимых ссылок (я ей там замечания накидал
    где точно надо) и составление приличного списка источников.
    

    Reported by oasychev on 2015-04-01 08:43:47

  11. Former user Account Deleted
    Ну, мне и так все равно собирать статистику. Списком больше, списком меньше...
    

    Reported by mamontov.dp on 2015-04-01 09:11:51

  12. Oleg Sychev reporter
    Мария и Дмитрий - надо разобраться что происходит с Lexical error threshold. Он либо
    не влияет на генерацию прав, либо криво передается.
    
    Полюбуйтесь на вопрос http://edu.vstu.org/question/preview.php?id=20&courseid=2 
    Он должен получать в качестве ответа
    unsigned short int separator ;
    Введите ему
    unsi gned shartint separator ;
    
    и полюбуйтесь как он залихватски исправляет опечатки больше 50% длины слова при Lexical
    error threshold в настройках вопроса 0,1 (кстати, это значение по умолчанию скорее
    всего слишком низкое для правильной работы - надо уточнить по налаживанию приличное
    значение по умолчанию).
    
    Просьба разобраться на каком участке кода проблема (неправильно сохраняется в вопросе,
    криво передается в lexical_analyzer или до look_for_matches - или look_for_matches
    так его замечательно игнорирует... И пофиксить, а также подобрать вменяемое значение
    по умолчанию...
    

    Reported by oasychev on 2015-04-01 18:42:47

  13. Oleg Sychev reporter
    И Дмитрий, не забывайте вытягивать когда я выталкиваю свои коммиты, мержить же приходится...
    

    Reported by oasychev on 2015-04-01 18:48:20

  14. Former user Account Deleted
    Кстати, по списку литературы. Почему для опечаток нельзя сослаться на доклад Левенштейна,
    который есть в списке литературы? Вроде бы он излагал там, что тот набор ошибок является
    оптимальным, и опирался как раз на статистику... 
    

    Reported by mamontov.dp on 2015-04-01 19:57:43

  15. Former user Account Deleted
    Все кроме этого по списку написал Бирюковой.
    

    Reported by mamontov.dp on 2015-04-01 20:18:14

  16. Former user Account Deleted
    Есть куда более плохая ситуация. На сравнении ответов в 14+ лексем программа съедает
    всю память в recurcive_backtracking. Как оказалось - такие ответы весьма реалистичны.
    

    Reported by mamontov.dp on 2015-04-02 19:05:09

  17. Oleg Sychev reporter
    Брр. С чего бы рекурсии жрать столько памяти, это ж не в ширь, а в глубь.
    а) надо прежде всего пофиксить проблему с пределами, которую я вчера нашел. Там количество
    генерируемых пар и соответственно объем бэктрекинга может резко упасть в этом случае
    - и все будет нормально
    б) если рекурсия жрет много памяти - туда скорее всего криво передаются параметры,
    где-то происходит копирование массива или чего-то подобного в рекурсивном вызове; обычно
    нахождение такого параметра и передача ссылки вместо копии проблему решает (в PHP можно
    сделать объект - как бы там не массивы целых чисел копировались при передаче...).
    
    Еще если там new где-то внутри рекурсивной функции - надо delete сделать когда не нужно.
    

    Reported by oasychev on 2015-04-02 19:21:39

  18. Former user Account Deleted
    Как я понял, там просто очень много пар создается. Надо бы еще выцепить саму ситуацию,
    в общей картине её не видно. Вообще, этому коду реально нужен рефакторинг, все эти
    bloking, unlock и прочее неподдерживаемы толком.
    

    Reported by mamontov.dp on 2015-04-02 20:03:10

  19. Former user Account Deleted
    Примеры мест где тормозит:
    
    Ответ студента    Правильный ответ
    float projection[4] [4];  float projection[4];
    p=p+p2-p1;  p += p2-p1;
    
    Видно, что здесь много совпадений. Нет ли возможности как-то оптимизировать перебор?
    

    Reported by mamontov.dp on 2015-04-02 20:09:49

  20. Former user Account Deleted
    Еще:
    int n=(*ptr)*2; и int n = 2 * *ptr;
    

    Reported by mamontov.dp on 2015-04-02 20:30:58

  21. Oleg Sychev reporter
    Ну вот во-первых - очень много пар может создаваться еще и из-за того странного бага,
    где очень много ошибок дозволяется в слове.
    
    Во-вторых, обычно рекурсия жрет время, а не память. Если память - там где-то кривость
    в управлении ею, которую надо отследить...
    
    Перебор там хитрый, там нужно подобрать набор пар так, чтобы не использовать ни одну
    лексему дважды, по двум критериям оптимизации
    а) использовать максимальное количество лексем
    б) при равном количестве лексем минимизировать суммарное редакционное расстояние
    
    Как это сделать оптимальнее чем перебор с отсечениями - вопрос интересный...
    

    Reported by oasychev on 2015-04-02 20:34:06

  22. Former user Account Deleted
    Вы забываете, что GC в PHP очень примитивный и вообще старается не собирать мусор почти
    никогда. Сам язык не был на это рассчитан.
    
    Но дело не в этом - я напихал в некоторые места gc_collect_cycles, что должно было
    заставить его работать быстрее.
    
    Однако, как я понимаю, что он находит очень много лишних пар, потому что ошибка происходит
    либо до, либо во время обхода массива status.
    
    Я завтра посмотрю, можно ли как-то обойти через верное использование lexicalerrorthreshold,
    но на высоких его значениях проблема останется.
    

    Reported by mamontov.dp on 2015-04-02 20:40:00

  23. Oleg Sychev reporter
    Пары составляются в look_for_matches, если порог взять 100% то пар будет вообще жуткое
    количество, порог должен сильно влиять на число пар...
    

    Reported by oasychev on 2015-04-02 20:46:46

  24. Former user Account Deleted
    Сейчас порог как-то странно считается - в block_formal_langs_token_base::look_for_matches
    считается
    
    $result = core_text::strlen($this->value) - core_text::strlen($this->value) * $threshold;
    ($threshold - наш родной $lexicalerrorthreshold).
    
    Далее с округленной версией этого сравнивается расстояние с другой лексемой в операциях
    и расстояние вернется верно только в  этом случае.
    
    Такое ощущение что тут две ошибки:
    
    1) Если лексема не из правильного ответа, то операции будут сравниваться с порогом
    из сравниваемого ответа, что недопустимо
    
    2) Должно хватить просто ceil(core_text::strlen($this->value) * $threshold)
    

    Reported by mamontov.dp on 2015-04-02 20:52:11

  25. Oleg Sychev reporter
    Ссылку на код киньте, хочу глянуть чот с этим result делается...
    
    А то формула прямо странная - получается что порог интерпретируется прямо наоброт что-ли
    - чем ниже порог тем больше ошибок позволяется??
    

    Reported by oasychev on 2015-04-02 21:02:57

  26. Former user Account Deleted
    Как я понимаю, да.
    
    https://code.google.com/r/mamontovdp-mariabirvg-formallangs/source/browse/blocks/formal_langs/tokens_base.php
    
    см. с. 709-715
    

    Reported by mamontov.dp on 2015-04-02 21:14:01

  27. Former user Account Deleted
    result это количество символов на которое могут отличаться 2 лексемы.
    соответственно, если порог 0,3, то для 10 символов - отличие составляет 7 символов
    для порога 0,7, только 3 символа. Расчет корректен
    

    Reported by mariabirvg on 2015-04-03 11:53:10

  28. Former user Account Deleted
    int y=hypercube[4][5][9][14]; и int hypercube[5][6][8][10][15]; hypercube[0][0][0][0][0]=
    0; 
    
    Ещё вариант, на котором много проблем.
    

    Reported by mamontov.dp on 2015-04-05 19:37:12

  29. Former user Account Deleted
    не удивительно что в нем много проблем. Наборов создается много из-за скобок одинаковых
    

    Reported by mariabirvg on 2015-04-07 07:59:02

  30. Former user Account Deleted
    не удивительно что в нем много проблем. Наборов создается много из-за скобок одинаковых
    

    Reported by mariabirvg on 2015-04-07 07:59:04

  31. Вадим Клевцов Account Deactivated
    Дописал разбор дерева для языков C\C++.
    

    Reported by vad23klev on 2015-04-16 14:38:57

  32. Former user Account Deleted
    Добился более-менее стабильной работы модуля в этом моменте. Задеплоил текущий код на
    edu.vstu.org, с учетом enum_analyzer. 
    
    Однако при слиянии от Вадима прилетело две ветки. Я сливался с 2313, в которой вроде
    последние коммиты. Помимо этого, при слиянии оказалось, что  qtype_correctwriting_string_pair::clone
    дублируется, перенес код из второй в первую.
    
    Залил - вроде бы работает. Задачу по добавлении поля для перечислений ставлю отдельно.
    

    Reported by mamontov.dp on 2015-05-01 11:42:50

  33. Former user Account Deleted
    1) При слиянии и развертывании, а также создании вопросов возникла проблема - в форме
    нет настройки для включения анализатора перечислений. Вадим, в вашем репозитории она
    есть (в смысле она перезатерлась в моем, а у вас нормально), или реально что-то не
    так? Да и строк локализации недостает для формы, пока сделал свои. 
    
    2) По умолчанию также в объекте question включены enum_analyzer и syntax_analyzer,
    предлагаю выключить оба (на всякий случай).
    
    3) Также, если этого нигде нет - мне изменения лучше вытолкнуть их в https://code.google.com/r/mamontovdp-mariabirvg-correctwriting2-enumsupport/source/browse
    (так как там изменения для него координируются). Или в какой-то другой лучше выталкивать?
    
    4) Ещё заметил, что is_lang_compatible никак не проверяется при валидации формы - думаю,
    что надо тоже проверять. Думаю, надо проверять.
    
    Пока создал тестовые вопросы в Hinting question types, можно попробовать и протестировать
    их. Все вопросы названы следующим образом: Question of XXX analyzer (setting test)
    

    Reported by mamontov.dp on 2015-05-08 20:47:32

  34. Former user Account Deleted
    Что сейчас сделано плохо со стороны Вадима:
    
    1) Переименовать qtype_correctwriting_proccesedstring в qtype_correctwriting_processed_string
    (серьезно)
    
    2) Привести код строки к исправленному (см. приложение) + убрать лишние геттеры и сеттеры
    из магических методов. Текущий код в твоем репозитории рушит систему геттеров и сеттеров
    от родительского кода.
    
    3) Исправить warning на главном сервере.
    
    Необходимо исправить в течение пары дней.
    
    
    Также мне очень не нравится то, что много патчей не моего кода находятся у меня в локальном
    репозитории. Предлагаю создать репозиторий для подготовки к релизу.
    

    Reported by mamontov.dp on 2015-05-13 18:56:06

    <hr> * Attachment: processed_string.php

  35. Вадим Клевцов Account Deactivated
    Первые два поправил, занят warning'ом.
    

    Reported by vad23klev on 2015-05-15 11:34:38

  36. Вадим Клевцов Account Deactivated
    Варнинг закрыт, теперь не предлагает подсказку, но все равно пишет что ответ почти правильный.
    Не знаю с чем это связанно.
    

    Reported by vad23klev on 2015-05-20 22:17:10

  37. Former user Account Deleted
    А сами перечисления генерируются? Кроме этого - откуда надо вытянуть код?
    

    Reported by mamontov.dp on 2015-05-21 04:24:42

  38. Вадим Клевцов Account Deactivated
    Да, генерируются.
    
    Сейчас вытолкну в https://code.google.com/r/vad23klev-clone-to-support-enumerations/source/browse
    

    Reported by vad23klev on 2015-05-21 09:36:29

  39. Вадим Клевцов Account Deactivated
    Вытолкнул. Еще заметил что в слитой версии, нехватает моей настройки для количества
    порядков. Она позволяет настроить производительность. Ее стоит вернуть.
    

    Reported by vad23klev on 2015-05-21 10:01:49

  40. Former user Account Deleted
    Кинь мне ссылку на файл репозитория, где она находится, чтобы я быстро слил. 
    

    Reported by mamontov.dp on 2015-05-21 10:05:11

  41. Вадим Клевцов Account Deactivated
    https://code.google.com/r/vad23klev-clone-to-support-enumerations/source/browse/question/type/correctwriting/settings.php
    

    Reported by vad23klev on 2015-05-21 10:10:43

  42. Former user Account Deleted
    Вадим, а у вас есть тест на такое же объявление структуры, как я создал на edu.vstu.org?
    Если нет, то создайте и проверьте, особенно enum_catcher. У меня почему-то не переставляются
    лексемы, я отладил и пришел к тому, что это потому что enum_catcher в момент оценки
    не возвращает перечисления.
    

    Reported by mamontov.dp on 2015-05-25 18:15:23

  43. Former user Account Deleted
    Снимаю вопрос, какая-то совершенно сумасшедшая ошибка в парсере возникла.
    

    Reported by mamontov.dp on 2015-05-25 18:24:54

  44. Former user Account Deleted
    Нашел в чем было дело. Исправлено в mamontovdp-mariabirvg-formallangs. В ближайшее время
    залью на главный сервер, но сначала сольюсь с кодом Вадима.
    

    Reported by mamontov.dp on 2015-05-25 18:56:58

  45. Former user Account Deleted
    Перезалил, исправил все проблемы.
    
    Что осталось с моей стороны:
    
    1) Сейчас валидация зависимостей анализаторов и их зависимостей от языков захардкожена.
    Надо поправить, сделать как полагается.
    
    2) ??? (Есть ли еще какие-то проблемы, которые должен я сделать и протестить, кроме
    1?)
    

    Reported by mamontov.dp on 2015-05-25 19:29:39

  46. Former user Account Deleted
    Как, вариант, можно рискнуть и заняться https://code.google.com/p/oasychev-moodle-plugins/issues/detail?id=333&colspec=ID%20Type%20Status%20Priority%20Component%20Milestone%20Owner%20Summary
    . Например добавить в глобальный конфиг параметр, который будет менять поле answer
    на textarea.
    

    Reported by mamontov.dp on 2015-05-25 19:36:31

  47. Former user Account Deleted
    UPD. Переделал валидацию формы. Теперь работает, как полагается.
    

    Reported by mamontov.dp on 2015-05-25 20:24:19

  48. Oleg Sychev reporter
    1)  enum+sequence
    struct  MyNiceStructure {  long Padding;int   char  SmallPart; FirstField; } DefaultValue;
    очень странные ошибки
      name of long integral field is missing; there is extra ""FirstField"".
    хотя там только переставлено
    
    2)  lexical+enum+sequence
    struct  MyNiceStructure {  long Padding;  char  SmallPart;intFirstField;  } DefaultValue;
    ошибки выводятся верно, но картинка крайне глючная
    

    Reported by oasychev on 2015-05-26 12:52:57

  49. Oleg Sychev reporter
    В пункте 2) имеется ввиду большая картинка. Картинка при хинтах в порядке, как и все
    хинты.
    

    Reported by oasychev on 2015-05-26 15:23:44

  50. Former user Account Deleted
    1) Лишние ошибки пофиксил, но дополнительный вариант, который должен быть сгенерирован
    Вадимом, не генерируется (от enum_analyzer должно придти две строки), а приходит одна
    
    2) Картинка строится неверно, потому что Вадим не заполняет поле enumcorrecttocorrect
    в string_pair. 
    

    Reported by mamontov.dp on 2015-05-27 09:38:43

  51. Вадим Клевцов Account Deactivated
    Исправил проблему с поле на edu.vstu.org . Вытолкнул в клон https://code.google.com/r/vad23klev-clone-to-support-enumerations
    

    Reported by vad23klev on 2015-05-29 13:13:38

  52. Former user Account Deleted
    Вы проверили, что они генерируются правильно? В соотношениях должна быть ключом позиция
    лексемы в конечной строке к позиции лексемы в исходной.
    
    В репозитории не вижу исправления дополнительного варианта. Он будет?
    

    Reported by mamontov.dp on 2015-05-29 13:17:38

  53. Вадим Клевцов Account Deactivated
    Вторая проблема исправлена.
    

    Reported by vad23klev on 2015-05-29 15:53:05

  54. Former user Account Deleted
    Подтверждаю, на edu.vstu.org проблема не воспроизводится. Жду исправления первой.
    

    Reported by mamontov.dp on 2015-05-29 18:45:55

  55. Вадим Клевцов Account Deactivated
    Проверь я и первую поправил.
    

    Reported by vad23klev on 2015-05-29 19:12:20

  56. Former user Account Deleted
    Очень хорошо, с первой тоже проблем нет. В ближайшее время просто солью два репозитория.
    На edu.vstu.org все хорошо.
    

    Reported by mamontov.dp on 2015-05-29 19:54:59

  57. Former user Account Deleted
    Слил репозитории.
    

    Reported by mamontov.dp on 2015-05-31 11:21:17

  58. Oleg Sychev reporter
    enum+lexical+sequence analyzer
    struct  MyNiceStructure { long Padding; char int  ;SmallPart;    First Field } DefaultValue;
    
    Ошибка 2) -  integral type name misplaced;
    Картинкой подсказка о положении int показывается правильно, а текстовый вариант не
    учитывает перестановку по enum analyzer и показывает его первым полем: The integral
    type name could be placed between opening brace of structure and name of integral field
    
    ИХМО надо текстовый хинт пофиксить.
    

    Reported by oasychev on 2015-06-07 22:24:55

  59. Former user Account Deleted
    Каким-то образом в клоне Вадима в строке 645 находится ошибка, см. https://code.google.com/r/vad23klev-clone-to-support-enumerations/source/browse/question/type/correctwriting/enum_analyzer.php
    

    Reported by mamontov.dp on 2015-06-08 05:05:34

  60. Former user Account Deleted
    Исправил генерацию хинта, код развернут на edu.vstu.org.
    

    Reported by mamontov.dp on 2015-06-08 05:30:03

  61. Вадим Клевцов Account Deactivated
    Исправил опечатку в клоне.
    

    Reported by vad23klev on 2015-06-08 08:40:00

  62. Former user Account Deleted
    Ок, вижу. Вопросов нет, в моем клоне исправление идентично.
    

    Reported by mamontov.dp on 2015-06-08 08:43:12

  63. Oleg Sychev reporter
    Вадим - в Question of enum+sequence analyzer (setting test) logical очень странные результаты
    бывают. 
    
    В тексте вопроса: t == a && b || c && k != true;
    Мой ответ: c && k != true  || b && t == a;
    Он предлагает "с &&" обменять местами чтобы стояли правее k != true -  зачем?!! Самое
    интересное, что именно в этом && я порядок не менял....
    

    Reported by oasychev on 2015-06-09 19:47:24

  64. Former user Account Deleted
    Вадим, проверьте, что строки перестановок генерируются верно. Если что - можно еще дампнуть
    результаты внутри perform_analysis_with_analyzer, см. https://code.google.com/r/mamontovdp-correctwriting-release2015/source/browse/question/type/correctwriting/question.php,
    с. 468, 469.
    

    Reported by mamontov.dp on 2015-06-09 19:54:53

  65. Former user Account Deleted
    Здесь могут быть либо два эквивалентных набора ошибок (что странно), либо требуемая
    строка не генерируется (что более вероятно).
    

    Reported by mamontov.dp on 2015-06-09 19:55:49

  66. Oleg Sychev reporter
    А вот тут надо обоим посмотреть
    Question of enum+sequence analyzer (setting test) arithmetic operations
    верный ответ - float k = ( a * b + c / d / e - f - g ) % t % m ;
    Мой ответ float k = ( a * b + e / d / c - f - g ) % t % m ;
    На картинке перенос "c" и "е" к оригинальному тексту, а ошибки
    There are mistakes in your response:
    1) variable c misplaced;
    2) variable d misplaced.
    При этом на подсказке к variable d misplaced в виде картинки показывается перемещение
    переменное "е". И текствые хинты к ней неправильные тоже.
    
    
    P.S. Вадим - включите все хинты в ваших вопросах, выставив за них штраф меньше 1
    

    Reported by oasychev on 2015-06-09 20:42:48

  67. Вадим Клевцов Account Deactivated
    По поводу, логических операций, у операции или выше приоритет, по этому ваша перестановка
    содержит ошибку.
    

    Reported by vad23klev on 2015-06-10 07:12:55

  68. Вадим Клевцов Account Deactivated
    по поводу Question of enum+sequence analyzer (setting test) arithmetic operations. У
    меня на локальном сервере, анализатор переставляет элементы.
    

    Reported by vad23klev on 2015-06-10 13:45:30

  69. Former user Account Deleted
    Ок, по поводу второго - посмотрю у себя, скорее всего неверно почему-то определяется
    переменная.
    

    Reported by mamontov.dp on 2015-06-10 13:46:51

  70. Вадим Клевцов Account Deactivated
    Добавлены вопросы с лексером.
    

    Reported by vad23klev on 2015-06-10 14:12:39

  71. Oleg Sychev reporter
    Насколько я помню, логическая И (лог. умнож-е) всегда имела приоритет над логическим
    ИЛИ (логич. сложение)
    

    Reported by oasychev on 2015-06-10 14:19:38

  72. Вадим Клевцов Account Deactivated
    Sequence генерирует такое дерево. У нас два пути либо исправление дерева, либо семантический
    анализ для перечислений.
    

    Reported by vad23klev on 2015-06-10 14:52:22

    <hr> * Attachment: digraph.dot.png<br>digraph.dot.png

  73. Former user Account Deleted
    Такое дерево неверно, поправлю в ближайшее время.
    

    Reported by mamontov.dp on 2015-06-10 17:18:20

  74. Former user Account Deleted
    Исправил дерево. После этого он показывает в первом случае, что correct, но в enum_analyzer
    есть возможно проблема:
    
    Notice: Undefined offset: 2 in /var/www/server1biz/data/www/edu.vstu.org/question/type/correctwriting/enum_analyzer.php
    on line 240
    
    .
    
    Вадим, если не затруднит - посмотри в чем дело, я завтра вторым займусь.
    

    Reported by mamontov.dp on 2015-06-10 20:34:05

  75. Вадим Клевцов Account Deactivated
    Исправил.
    

    Reported by vad23klev on 2015-06-11 08:42:32

  76. Former user Account Deleted
    Оказалось, что на edu.vstu.org старая версия enum_analyzer.php. Перезалил. После перезаливки
    вторая ошибка исчезла. Протестировал на предыдущих - проблем нет. Считаю проблемы исправленными.
    

    Reported by mamontov.dp on 2015-06-11 15:46:42

  77. Oleg Sychev reporter
    enum+sequence analyzer
    Правильный ответ: int t, *h , k[] ;
    Мой вариант: int t k[] , *h , ;
    
    Она почему-то предлагает мне перенести k[] хотя гораздо короче перенести t или вообще
    запятую...
    

    Reported by oasychev on 2015-06-18 13:21:54

  78. Oleg Sychev reporter
    enum+sequence analyzer
    Правильный ответ: enum MyNiceEnum = { FirstField,  Padding = 1,  SmallPart };
    Мой вариант: enum MyNiceEnum = { Padding FirstField = 1,  ,  SmallPart };
    По мне достаточно перенести только FirstField , но вопрос почему-то предлагает пренести
    Padding и запятую.
    

    Reported by oasychev on 2015-06-18 13:29:16

  79. Oleg Sychev reporter
    Вадим - вот здесь точно ваша ошибка
    enum+sequence analyzer
    Правильный ответ: int t = a = b = c = k = 5 ;
    Мой вариант: int t = a = b =5  = k = c  ;
    Correct
    
    Варианты неэквивалентны. ПОСЛЕДНИЙ элемент в такой цепочке переставлять НЕЛЬЗЯ. Во-первых,
    там может быть не l-value; во-вторых промежуточным переменным могут другие значения
    присвоиться...
    

    Reported by oasychev on 2015-06-18 13:35:29

  80. Oleg Sychev reporter
    * при реакции на эти баги прошу ссылаться на номер коммента с оригинальным сообщением
    о баге
    

    Reported by oasychev on 2015-06-18 13:41:32

  81. Oleg Sychev reporter
    Также нам надо разобраться с lexical error threshold - во всей документации он задавал
    максимально возможный процент ошибок; а у Маши в коде - с точностью до наоборот. У
    нас там приведена в чувство эта разница?
    

    Reported by oasychev on 2015-06-18 17:19:27

  82. Former user Account Deleted
    Насколько помню, да.
    

    Reported by mamontov.dp on 2015-06-19 07:05:27

  83. Вадим Клевцов Account Deactivated
    По поводу вопроса с перечислением. При таком ответе enum MyNiceEnum = { Padding FirstField
    = 1,  ,  SmallPart }; Эталонный ответ enum MyNiceEnum = { FirstField,  Padding = 1,
     SmallPart }; дает наибольшую LCS по этому такие преложения 
    

    Reported by vad23klev on 2015-06-19 08:56:58

  84. Вадим Клевцов Account Deactivated
    enum+sequence analyzer
    Правильный ответ: int t = a = b = c = k = 5 ;
    Мой вариант: int t = a = b =5  = k = c  ;
    Correct
    
    
    Файл на сервере обновлен. Исправлено.
    

    Reported by vad23klev on 2015-06-19 09:48:35

  85. Former user Account Deleted
    Не понимаю, что в 85. Я правильно понимаю, что LCS вычисляется неверно? Т.е. должно
    быть оно другим?
    

    Reported by mamontov.dp on 2015-06-19 11:21:29

  86. Вадим Клевцов Account Deactivated
    Нет, вычисляется все верно.
    

    Reported by vad23klev on 2015-06-19 11:27:25

  87. Oleg Sychev reporter
    В 85 можете посчитать LCS между enum MyNiceEnum = { Padding FirstField = 1,  ,  SmallPart
    }; и двумя вариантами:
    enum MyNiceEnum = { FirstField,  Padding = 1,  SmallPart };
    enum MyNiceEnum = {  Padding = 1, FirstField,  SmallPart };
    
    ?
    Они действительно одинаковые или что там? Я сейчас со студентами, сам могу посчитать
    позже...
    

    Reported by oasychev on 2015-06-19 11:28:03

  88. Вадим Клевцов Account Deactivated
    в первом будет больше на 1 символ.
    

    Reported by vad23klev on 2015-06-19 11:30:04

  89. Oleg Sychev reporter
    У меня так не получается. Вадим, опубликуйте уже тогда сами LCS в обоих случаях...
    

    Reported by oasychev on 2015-06-19 17:57:24

  90. Former user Account Deleted
    У меня в голове пока рисуется картина наоборот и LCS разные:
    

    Reported by mamontov.dp on 2015-06-19 19:50:19

    <hr> * Attachment: LCS.png<br>LCS.png

  91. Вадим Клевцов Account Deactivated
    Согласен с Дмитрием.
    

    Reported by vad23klev on 2015-06-20 16:07:51

  92. Former user Account Deleted
    Ошибка в п. 79 происходила из-за ошибки в парсере. Хотя я не считаю, что подобное объявление
    вообще правильно, т.к. мы не можем зарезервировать блок неопределенного размера на
    стеке, но я разрешил его в языке. После этого проблема исчезла. В ближайшее время разверну
    исправления.
    

    Reported by mamontov.dp on 2015-06-20 17:56:32

  93. Oleg Sychev reporter
    А там парсер выдавал что это неправильно? Или просто молча строил неправильное дерево?
    Выдать ошибку парсера учителю - нормальный вариант...
    
    Так пустые скобки допустимы только при инициализации конечно, либо в параметрах функции.
    Вадим, усовершенствуйте вопрос сделав массив с цифрой в скобках и массив с пустыми
    скобками и инициализацией.
    

    Reported by oasychev on 2015-06-20 18:01:34

  94. Former user Account Deleted
    Ошибка в п. 80 происходит, потому что сам вопрос сформулирован неправильно. Не должно
    быть равенства после имени перечисления.
    

    Reported by mamontov.dp on 2015-06-20 18:08:31

  95. Former user Account Deleted
    Ошибка в п. 81 не воспроизводится, судя по всему, обновление сработало хорошо.
    

    Reported by mamontov.dp on 2015-06-20 18:12:47

  96. Вадим Клевцов Account Deactivated
    вопросы дополнил.
    

    Reported by vad23klev on 2015-06-20 18:19:21

  97. Former user Account Deleted
    Сделал простое сообщение об ошибке при синтаксическом разборе в форме.
    

    Reported by mamontov.dp on 2015-06-20 18:57:33

  98. Log in to comment