stringtranslate.com

Программа трансформации

Преобразование программы — это любая операция, которая берет компьютерную программу и генерирует другую программу. Во многих случаях преобразованная программа должна быть семантически эквивалентна оригиналу относительно определенной формальной семантики , а в редких случаях преобразования приводят к программам, которые семантически отличаются от оригинала предсказуемым образом. [1]

Хотя преобразования могут быть выполнены вручную, часто более практично использовать систему преобразования программ , которая применяет спецификации требуемых преобразований. Преобразования программ могут быть указаны как автоматизированные процедуры, которые изменяют структуры данных компилятора (например, абстрактные синтаксические деревья ), представляющие текст программы, или могут быть указаны более удобно с использованием шаблонов или образцов, представляющих параметризованные фрагменты исходного кода.

Практическим требованием к системам преобразования исходного кода является то, что они могут эффективно обрабатывать программы, написанные на языке программирования . Обычно это требует интеграции полного интерфейса для интересующего языка программирования, включая синтаксический анализ исходного кода , построение внутренних представлений программ структур кода, значение символов программы, полезный статический анализ и восстановление допустимого исходного кода из преобразованных представлений программы. Проблема построения и интеграции адекватных интерфейсов для обычных языков ( Java , C++ , PHP и т. д.) может быть столь же сложной, как и построение самой системы преобразования программы из-за сложности таких языков. Чтобы быть широко полезной, система преобразования должна иметь возможность обрабатывать многие целевые языки программирования и должна предоставлять некоторые средства для указания таких интерфейсов.

Обобщением семантической эквивалентности является понятие уточнения программы : одна программа является уточнением другой, если она завершается во всех начальных состояниях, для которых завершается исходная программа, и для каждого такого состояния она гарантированно завершается в возможном конечном состоянии для исходной программы. Другими словами, уточнение программы более определено и более детерминировано, чем исходная программа. Если две программы являются уточнениями друг друга, то программы эквивалентны. [ необходимо разъяснение ]

Смотрите также

Ссылки

  1. ^ Уорд, Мартин (1989). Усовершенствования и преобразования программ доказательства (диссертация доктора философии). Оксфордский университет.{{cite book}}: CS1 maint: отсутствует местоположение издателя ( ссылка )

Внешние ссылки