Генерация кода C++ с Python

Может любой указывать на меня на некоторую документацию относительно того, как записать сценарии в Python (или Perl или любой другой Linux дружественный язык сценария), которые генерируют код C++ от XML или py файлы из командной строки. Я хотел бы смочь описать некоторые XML-файлы и затем работать, оболочка управляют, чтобы считал эти файлы и генерировал.h файлы с полностью встроенными функциями, например, операторы потоковой передачи, конструкторов, и т.д.

9
задан user357525 3 June 2010 в 13:57
поделиться

5 ответов

Вы можете взглянуть на Shedskin , проект, который генерирует код C ++ из кода Python.

В зависимости от ваших причин, как указал Satanicpuppy, это может быть немного бессмысленно.

1
ответ дан 4 December 2019 в 12:16
поделиться

Несколько лет назад я работал над проектом по упрощению межпроцессного управления общей памятью для крупномасштабных систем моделирования.Мы использовали связанный подход, в котором расположение данных в общей памяти определялось в файлах XML, а генератор кода, написанный на python, считывал XML и выдавал набор файлов заголовков, определяющих структуры и связанные функции / операторы / и т. Д., Чтобы соответствовать Описание XML. В то время я просмотрел несколько движков шаблонов и, к своему удивлению, обнаружил, что проще и проще сделать это «вручную».

Читая XML, просто заполните набор структур данных, соответствующих вашему коду. Объекты файла заголовка содержат классы, а классы содержат переменные (которые могут относиться к другим типам классов). Дайте каждому объекту метод printSelf () , который выполняет итерацию по его содержимому и вызывает printSelf () для каждого содержащегося в нем объекта.

Поначалу это кажется немного сложным, но если начать, все довольно просто. Да, и еще один совет, который поможет с сгенерированным кодом, добавьте аргумент отступа в printSelf () и увеличивайте его на каждом уровне. Это значительно упрощает чтение сгенерированного кода .

1
ответ дан 4 December 2019 в 12:16
поделиться

Я действительно работаю с устаревшей средой разработки " 4GL ", которая делает нечто подобное, и многие модели старой парадигмы 4GL используют C и C ++ в качестве язык, на котором они выводят свой сгенерированный код.

При этом 4GL в значительной степени смирился с историей. Проблема в том, что когда вы машинно генерируете код C, вы теряете прирост производительности, который был бы результатом использования C в первую очередь, а код чрезвычайно трудно поддерживать. С таким же успехом можно просто написать программу на Python.

0
ответ дан 4 December 2019 в 12:16
поделиться

Посмотрите Cheetah . Это шаблонизатор, написанный на Python.

1
ответ дан 4 December 2019 в 12:16
поделиться

Боюсь, что вы не найдете уже встроенного решения, которое бы принимало ваши конкретные файлы xml или python и преобразовывало их в требуемый вывод "из коробки".

Вам придется самостоятельно реализовать разбор, обработку данных и вывод. Однако не все сами; вот несколько советов относительно парсинга и вывода.

Python поставляется с двумя различными парсерами XML (SAX и DOM - прокрутите вниз, чтобы увидеть некоторые примеры). Вам придется использовать один из них для чтения исходных файлов.

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

2
ответ дан 4 December 2019 в 12:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: