01/16/92 ITPU v1.31
Что нового в этой версии?
-------------------------
o Возможность использования с Turbo Pascal for Windows -
новая опция командной строки /L
o Возможность указывать список каталогов с модулями (/U)
o Небольшие комментарии полученного текста
o Обработка файлов конфигурации
o Полная поддержка case-структур
o Обработка inline-функций
o Разделение типизированных и нетипизированных констант
01/25/92
ITPU v1.31
~~~~~~~~~~~~
Средство изучения интерфейса объектных модулей
Турбо Паскаля (TPU)
Предлагаемая программа выбирает из TPU-файлов всю полез-
ную символьную информацию и выводит ее в файл в приемлемом ви-
де. Для внесения ясности надо заметить, что это не производи-
тель исходного кода, поэтому формат выходного файла, хотя и
максимально приближен к традиционному стилю оформления исход-
ных текстов на Паскале, на самом деле не обязательно является
правильным. Это обусловлено рядом технических причин. В конце
концов, не нужно забывать, что TPU - это всего лишь ОБЪЕКТНЫЙ
код, совсем не предназначенный для того, чтобы из него произ-
водить полновесный исходный текст.
К сожалению, Borland не гарантирует вертикальную сов-
местимость (что, на взгляд автора, ему несвойственно) в отно-
шении TPU, поэтому доступен лишь формат TPU-файлов, сгенериро-
ванных версией Турбо Паскаля 6.0, а также версией Турбо Паска-
ля для Windows. Что ж, можно повторить известную Борландовскую
сентенцию: "Вам необходимо перекомпилировать все старые модули
с помощью новой версии компилятора".
В этой версии несколько существенных дополнений и новых
опций командной строки. Формат вызова достаточно прост:
itpu [options] <inputfile>[.TPU] [<outputfile>[.INT]]
Квадратные скобки по традиции обозначают необязательные
параметры. Как и во всякой хорошей программе, порядок следова-
ния опций и наличие между ними n-го числа пробелов не имеет
решительно никакого значения. В именах файлов расширения могут
быть как опущены, так и явно указаны.
В версии 1.31 имеются в наличие следующие опции:
/c Управление регистром букв в идентификаторах.
u - Все буквы в верхнем регистре l - Все в нижнем
регистре s - Традиционный стиль (первая буква в
верхнем регистре, все остальные - в нижнем) По
умолчанию принимается верхний регистр (/cu)
/w Управление записью в файл. Если /w+ (или просто
/w), то старый файл будет переписан, если /w-, то
при наличии старого файла, будет выдано сообщение
об ошибке и осуществлено вываливание в DOS. По
умолчанию принимается последнее.
/r Управление выводом комментариев. Пока что все
комментарии состоят из размера записей record.
Если запись содержит case-объединения, то выво-
дится ее максимальный размер.
/l Имя системной библиотеки, которая будет использо-
ваться вместо стандартной TURBO.TPL. Можно указы-
вать полный путь и даже нестандартное расширение
(по умолчанию принимается .TPL). Например, поль-
зователи Turbo Pascal for Windows могут указать
/lTPW или /l\TPW\BIN\TPW. Проверка на соот-
ветствие библиотеки не осуществляется, поэтому,
возможна ситуация, когда unit скомпилирован с по-
мощью Turbo Pascal for Windows, а библиотека была
для v6.0, - в этом случае могут появиться всякие
ругательные 'unknown' или что-нибудь в этом роде.
/u Список каталогов, в которых могут находиться
недостающие модули. Поиск модулей осуществляется
в текущем каталоге, затем в этом списке, а затем
в PATH. В командной строке могут быть указаны
несколько параметров /U. В этом случае они
присоединяются друг к другу.
В версии 1.31 добавлена такая существенная возможность,
как поддержка файлов конфигурации (CFG). CFG-файлы рассматри-
ваются как часть командной строки, но допускают более свобод-
ный формат написания параметров - элементы могут разделяться
не только пробелами и символами-разделителями (/), но и распо-
лагаться на разных строках, что облегчает чтение CFG-файла. В
качестве примера приведен такой CFG-файл. Поиск файлов конфи-
гурации осуществляется сначала в том каталоге, откуда запущена
программа, а затем в текущем. Вообще, для наглядности можно
считать CFG-файлы продолжением (или, скорее, началом) команд-
ной строки. Таким образом, количество информации, переданной
программе ограничивается лишь Вашей фантазией и наличием сво-
бодной памяти. Конечно, в этой версии не бог весть сколько ин-
формации, но если смотреть чуть дальше, то станет ясно, что
командной строки в один прекрасный момент может не хватить.
Параметры могут повторяться, но использоваться будет последнее
принятое значение. Например, если в CFG-файле в каталоге, от-
куда запущена программа указано /cs, в CFG-файле в текущем ка-
талоге /cu, а в командной строке /cl, то будет использоваться
/cl.
Одно маленькое, но необходимое замечание: CFG-файл должен
иметь то же имя, что и программа, поэтому, если кто-то по за-
гадочным соображениям решит назвать программу еще более
по-другому, то нужно также переименовать и CFG-файлы.
В этой версии исправлены некоторые мелкие неполадки, а
также введена обработка записей, содержащих case-объединения.
Нужно сказать, что не всегда сложные записи с большим коли-
чеством вложенных case-структур будут выглядеть идентично
исходному тексту, но если выдрать полученную запись и скомпи-
лировать, то результат будет аналогичным, т.е. относительное
положение каждого поля отражается верно.
Кроме того, в версии 1.31 введен новый раздел - 'typed
const', куда помещаются все типизированные константы, - это
несколько облегчает чтение интерфейса. Расширена информация о
dependency-файлах, - выдается тип файла, дата создания (если
имеется) и каталог (тоже если имеется). Поддерживаются следую-
щие типы файлов: pascal, include, object и resource. В этой
версии также полностью обрабатываются inline-функции.
|