Корпоративный архитектор (C++): импорт исходного кода с пользовательским макросом и аргументом в параграфах

Я хочу провести обратный инжиниринг моделей из исходного кода с помощью Enterprise Architect 11. Определения классов выглядят следующим образом:

class MYCUSTOMMACRO(className) : public baseClass
{
    ...
}

К сожалению, EA пропускает эти классы, так как макрос не был распознан. Если я определю языковой макрос в EA, MYCUSTOMMACRO(className) пропущено в целом. Это также приводит к ошибке синтаксического анализа, поскольку имя класса отсутствует.

Итак, есть ли способ извлечь имя класса из макроса и импортировать классы?

Спасибо Оливер

1 ответ

Решение

Вы можете заставить это работать, создав собственный файл технологии MDG, основанный на следующем:

<MDG.Technology version="1.0"><Documentation id="0" name="Customer Code Module" version="1" notes="Allows using a Customer Macro as an identifier"/>
<CodeModules><CodeModule language="C++" notes=""><CodeOptions><CodeOption name="PrependGrammarDefinitions">
                    <![CDATA[
<identifier>            ::= "MYCUSTOMMACRO" "(" <> ")"      

]]>
</CodeOption>
</CodeOptions></CodeModule></CodeModules>
</MDG.Technology>

Сохраните код в виде файла XML, то есть prependgrammer.xml.

После создания вы можете активировать его с помощью расширений | Затем в диалоговом окне "MDG Technologies..." нажмите кнопку "Дополнительно...", затем нажмите "Добавить"

Теперь вы можете просто импортировать C++, как обычно, и он должен выбрать ваш класс, определенный "MYCUSTOMMACRO".

Надеюсь это поможет!

Другие вопросы по тегам