Как написать генератор кода с учетом собственного IDL?

Если у вас достаточно простая схема с основными логическими строковыми полями, как написать генератор кода на C ++. Если вы когда-нибудь писали, то как вы начали. Статьи / рекомендации приветствуются.

РЕДАКТИРОВАТЬ: Обратите внимание, что это не стандартный CORBA idl.


person kal    schedule 27.01.2009    source источник
comment
Что вы пытаетесь создать? Если вы скажете «IDL», я думаю, «CORBA». Почему бы не использовать существующий генератор / компилятор CORBA?   -  person Kai Huppmann    schedule 27.01.2009
comment
Плохо поставленный вопрос. Почему бы тебе не перефразировать?   -  person user51568    schedule 27.01.2009
comment
Отредактировано на основе комментариев   -  person kal    schedule 28.01.2009
comment
Пример схемы, вероятно, поможет получить больше ответов.   -  person Andy Dent    schedule 17.02.2009


Ответы (3)


В итоге:

  1. Конвертировать что-нибудь вручную,
  2. скопируйте этот вывод в строковый литерал, а затем
  3. обобщать с помощью циклов и переменных вместо фиксированных имен.

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

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

Для кода средней сложности достаточно иметь длинный набор операторов вывода с использованием стандартных классов ostream C ++, которые позволят вам писать множество литералов, смешивающих код с любыми переменными.

person Andy Dent    schedule 27.01.2009

Comet - довольно хорошая библиотека для реализации COM.

person Vadim Ferderer    schedule 27.01.2009