JEDICodeFromat падает по Access violation

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

JEDICodeFromat падает по Access violation

Сообщение Kitayets » 06.11.2015 14:38:11

Всем привет, такая проблема - достался проект один, с очень длинными корнями (из 80-ых еще, а может и раньше). Явно портированный с каких-то древних языков типа Алгола.

Попытался я отформатировать модуль один встроенным в lazarus 1.4.2 JEDI форматером (версия 2.44), так он падает с Исключением EAccessViolation, на процедуре в 428 строк (из них треть - комментарии). Подскажите - как можно по другому отформатировать код кроме как вручную?

Вручную сложно, т.к. перед подением Jefdi codeformat насчитал глубину дерева в 41 (вложенные IF-ы с циклами), по этому хочется именно автоматического формата.

Программа компилируется и даже вроде как работает...
Kitayets
постоялец
 
Сообщения: 171
Зарегистрирован: 05.05.2010 21:15:24

Re: JEDICodeFromat падает по Access violation

Сообщение Лекс Айрин » 06.11.2015 16:09:46

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

Лучше бы увидеть сам текст ошибки.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: JEDICodeFromat падает по Access violation

Сообщение Kitayets » 06.11.2015 17:45:27

текста ошибки как бы нет никакого, просто, выбираю в меню "Код-> Форматирование кода JEDI -> Текущая вкладка редактора", вылазит окошко с деревом разбора и в окно "сообщения" вываливается следующее:
Код: Выделить всё
JCF, ошибок: 1
testx.pas Error: Exception EAccessViolation  Access violation
IDE Aborted due to error


Добавлено спустя 9 минут 34 секунды:
Я попробовал идущий в комплекте с freepascal форматер - ptop с настройками по умолчанию - результат меня что-то не впечатлил :(

Скопировал только проблемную процедуру - если кому не лень, подскажите чего JEDI падает - http://pastebin.com/5ZuJr177
на этой страничке код уже после ptop.
Основная претензия к ptop - не верно отступы в вложенных (и одинарных IF расставляет).

Добавлено спустя 4 минуты 2 секунды:
Ну и в коде особенной вложенности IF-ов нет, максимум 3, а дерево парсинга глубокое из-за скобок в формулах судя по всему.
Kitayets
постоялец
 
Сообщения: 171
Зарегистрирован: 05.05.2010 21:15:24

Re: JEDICodeFromat падает по Access violation

Сообщение wavebvg » 06.11.2015 18:19:09

Код: Выделить всё
Exception EAccessViolation  Access violation

Возможно ошибка в самой реализации парсера, поэтому и не работает

Добавлено спустя 5 часов 7 минут 14 секунд:
Всему виной - комментарии

Убрал лишние - всё стало отлично

Добавлено спустя 1 минуту 22 секунды:
Если не лень, запостите об этом в трекер.
Заранее спасибо.
wavebvg
постоялец
 
Сообщения: 355
Зарегистрирован: 28.02.2008 04:57:35

Re: JEDICodeFromat падает по Access violation

Сообщение Kitayets » 09.11.2015 11:39:45

Ага, спасибо. Действительно в комментариях, были несоответствия открытых и закрытых скобок - типа таких {{{ }
Kitayets
постоялец
 
Сообщения: 171
Зарегистрирован: 05.05.2010 21:15:24

Re: JEDICodeFromat падает по Access violation

Сообщение vada » 09.11.2015 13:21:50

Проблема во вложенных комментариях. Есть открытые скобки { но на них нет закрытых.
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 245

Рейтинг@Mail.ru