Enterprise Architect (C++):使用括号中的自定义宏和参数导入源代码
Enterprise Architect (C++): Import Source Code with Custom Macro and Argument in Parantheses
我想使用 Enterprise Architect 11 从源代码逆向工程模型。class 定义如下:
class MYCUSTOMMACRO(className) : public baseClass
{
...
}
不幸的是,EA 跳过了这些 classes,因为宏没有被识别。如果我在EA中定义一个语言宏,MYCUSTOMMACRO(className)
会被整体跳过。这又会产生解析错误,因为缺少 class 名称。
那么,有没有办法从宏中提取 class 名称并导入 classes?
谢谢,
奥利弗
您可以根据以下内容创建自己的 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... 对话框,然后点击 "Advanced..." 按钮,然后点击添加。
现在您可以按照正常方式导入 C++,它应该会获取您定义的 "MYCUSTOMMACRO" class。
希望对您有所帮助!
我想使用 Enterprise Architect 11 从源代码逆向工程模型。class 定义如下:
class MYCUSTOMMACRO(className) : public baseClass
{
...
}
不幸的是,EA 跳过了这些 classes,因为宏没有被识别。如果我在EA中定义一个语言宏,MYCUSTOMMACRO(className)
会被整体跳过。这又会产生解析错误,因为缺少 class 名称。
那么,有没有办法从宏中提取 class 名称并导入 classes?
谢谢, 奥利弗
您可以根据以下内容创建自己的 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... 对话框,然后点击 "Advanced..." 按钮,然后点击添加。
现在您可以按照正常方式导入 C++,它应该会获取您定义的 "MYCUSTOMMACRO" class。
希望对您有所帮助!