УСОВЕРШЕНСТВОВАННОЕ ПРЕОБРАЗОВАНИЕ ИСХОДНОГО КОДА ЯЗЫКА ПРОГРАММИРОВАНИЯ

1. Энергонезависимый машиночитаемый носитель данных, в котором хранятся программные команды, в результате выполнения которых на вычислительном устройстве вычислительное устройство:
получает посредством инструмента обработки исходного языка команду обработать исходный код на первом высокоуровневом языке;
получает в ответ на указанную команду доступ посредством инструмента обработки исходного языка к исходному коду на первом высокоуровневом языке;
анализирует посредством инструмента обработки исходного языка исходный код на первом высокоуровневом языке;
генерирует посредством инструмента обработки исходного языка структуру данных (например, AST), описывающую исходный код на первом высокоуровневом языке, причем структура данных предусматривает по меньшей мере идентификацию каждого символа, используемого в исходном коде на первом высокоуровневом языке;
анализирует посредством инструмента преобразования кода указанную структуру данных;
генерирует посредством инструмента преобразования кода исходный код на втором высокоуровневом языке, отличающемся от первого высокоуровневого языка, на основании, по меньшей мере частично, анализа указанной структуры данных;
анализирует посредством инструмента преобразования кода исходный код на втором высокоуровневом языке для идентификации символов, соответствующих объявлению функции;
в ответ на определение одного или нескольких дубликатов заданного символа, соответствующего объявлению функции в исходном коде на втором высокоуровневом языке, инструмент преобразования кода меняет исходный код на втором высокоуровневом языке для изменения всех случаев вызова функции, соответствующих заданному символу; и
выдает посредством инструмента преобразования кода измененный исходный код на втором высокоуровневом языке.
2. Энергонезависимый машиночитаемый носитель данных по п. 1, в котором изменение исходного кода на втором высокоуровневом языке для изменения всех случаев вызовов функции, соответствующей заданному символу, предусматривает:
определение причины генерирования одного или нескольких дубликатов заданного символа;
выбор на основании обнаруженной причины из множества типов изменений одного типа изменения заданного символа для генерирования нового символа; и
генерирование либо нового символа для заданного символа, либо нового соглашения о вызове для каждого вызова функции в зависимости от выбранного типа изменения.
3. Энергонезависимый машиночитаемый носитель данных по п. 2, в котором выбранный тип изменения предусматривает генерирование одного или нескольких символов, указывающих на соответствующую причину генерирования дубликата символа.
4. Энергонезависимый машиночитаемый носитель данных по п. 2, в котором причиной генерирования одного или нескольких дубликатов заданного символа является существование поддерживаемой функции на первом исходном языке, которая не поддерживается на втором исходном языке (примеры неподдерживаемых функций включают неподдерживаемые типы данных, специализации шаблонов и перегруженные конструкторы).
5. Энергонезависимый машиночитаемый носитель данных по п. 1, в котором определение одного или нескольких дубликатов заданного символа типа объявления, включенных в исходный код на втором высокоуровневом языке, предусматривает:
анализ всех параметров всех объявлений функции в исходном коде на втором высокоуровневом языке; и
определение того, что два или более объявлений функции в исходном коде на втором высокоуровневом языке являются дубликатами, в ответ на определение того, что два или более объявлений преобразованной функции являются идентичными (т.е. имеют одинаковые подписи).
6. Энергонезависимый машиночитаемый носитель данных, в котором хранятся программные команды, в результате выполнения которых на вычислительном устройстве вычислительное устройство:
получает посредством инструмента обработки исходного языка команду обработать исходный код на первом высокоуровневом языке;
получает в ответ на указанную команду доступ посредством инструмента обработки исходного языка к исходному коду на первом высокоуровневом языке;
анализирует посредством инструмента обработки исходного языка исходный код на первом высокоуровневом языке;
генерирует посредством инструмента обработки исходного языка структуру данных (например, AST), описывающую исходный код на первом высокоуровневом языке;
анализирует посредством инструмента преобразования кода структуру данных для определения того, существует ли в первом исходном коде программный код для создания временных объектов;
в ответ на идентификацию программного кода в первом исходном коде для создания заданного временного объекта генерирует соответствующий программный код во втором исходном коде для явного создания объекта такого же типа, что и заданный временный объект; и
выдает второй исходный код на втором высокоуровневом языке.
7. Энергонезависимый машиночитаемый носитель данных по п. 6, в котором идентифицирование программного кода в первом исходном коде для создания заданного временного объекта дополнительно предусматривает идентифицирование объема, в пределах которого существуют заданные временные объекты, причем указанный объем содержит первую точку, в которой заданный временный объект начинает существовать, и вторую точку, в которой заданный временный объект прекращает существовать.
8. Энергонезависимый машиночитаемый носитель данных по п. 7, в котором генерирование соответствующего программного кода во втором исходном коде для явного создания объекта того же типа, что и заданный временный объект, предусматривает:
генерирование кода для явного создания объекта во втором исходном коде; и
генерирование кода для уничтожения объекта во втором исходном коде.
9. Энергонезависимый машиночитаемый носитель данных по п. 8, в котором в результате выполнения программных команд на вычислительном устройстве вычислительное устройство дополнительно:
генерирует код во втором исходном коде для регистрации создания явно созданных объектов во втором исходном коде, которые соответствуют временным объектам в первом исходном коде; и
генерирует код во втором исходном коде для идентификации явно созданных объектов во втором исходном коде, которые были зарегистрированы, и подтверждения их уничтожения.