Всем привет, такая проблема - достался проект один, с очень длинными корнями (из 80-ых еще, а может и раньше). Явно портированный с каких-то древних языков типа Алгола.
Попытался я отформатировать модуль один встроенным в lazarus 1.4.2 JEDI форматером (версия 2.44), так он падает с Исключением EAccessViolation, на процедуре в 428 строк (из них треть - комментарии). Подскажите - как можно по другому отформатировать код кроме как вручную?
Вручную сложно, т.к. перед подением Jefdi codeformat насчитал глубину дерева в 41 (вложенные IF-ы с циклами), по этому хочется именно автоматического формата.
Программа компилируется и даже вроде как работает...
JEDICodeFromat падает по Access violation
Модератор: Модераторы
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Kitayets Скорее всего, придется вручную. Судя по всему, идет просто переполнение из-за слишком большой вложенности конструкций... ну или переписать код, разделив процедуру на несколько. В любом случае, даже после переформатирования подобный текст будет читать трудновато.
Лучше бы увидеть сам текст ошибки.
Лучше бы увидеть сам текст ошибки.
текста ошибки как бы нет никакого, просто, выбираю в меню "Код-> Форматирование кода JEDI -> Текущая вкладка редактора", вылазит окошко с деревом разбора и в окно "сообщения" вываливается следующее:
Добавлено спустя 9 минут 34 секунды:
Я попробовал идущий в комплекте с freepascal форматер - ptop с настройками по умолчанию - результат меня что-то не впечатлил
Скопировал только проблемную процедуру - если кому не лень, подскажите чего JEDI падает - http://pastebin.com/5ZuJr177
на этой страничке код уже после ptop.
Основная претензия к ptop - не верно отступы в вложенных (и одинарных IF расставляет).
Добавлено спустя 4 минуты 2 секунды:
Ну и в коде особенной вложенности IF-ов нет, максимум 3, а дерево парсинга глубокое из-за скобок в формулах судя по всему.
Код: Выделить всё
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, а дерево парсинга глубокое из-за скобок в формулах судя по всему.
Код: Выделить всё
Exception EAccessViolation Access violationВозможно ошибка в самой реализации парсера, поэтому и не работает
Добавлено спустя 5 часов 7 минут 14 секунд:
Всему виной - комментарии
Убрал лишние - всё стало отлично
Добавлено спустя 1 минуту 22 секунды:
Если не лень, запостите об этом в трекер.
Заранее спасибо.
Ага, спасибо. Действительно в комментариях, были несоответствия открытых и закрытых скобок - типа таких {{{ }
Проблема во вложенных комментариях. Есть открытые скобки { но на них нет закрытых.
