2010-06-28 75 views
1

我是一名工程学学生,并决定我最后一年的项目。UML工具的代码生成功能背后的技术是什么

许多考生之一是一个带有代码生成工具的在线UML工具。但是我没有采用编译器设计类,所以我不太了解代码生成技术。

我想知道我应该研究的技术,以便构建这样的东西。如果这些技术与编写编译器一样复杂,那么也许我将不得不放弃这个想法。

+0

请注意,尽管代码生成的遍历抽象语法树可能不是很难,但是创建这个树可能会有很多工作,因为UML元模型非常复杂。也许这是一个好主意,使用已有的东西,例如EMF。 – 2010-06-28 21:39:50

回答

3

编译实际上与the kind of code generation you are describing相反,所以我不认为你需要知道如何编写编译器。

代码生成可以像组合文本字符串或using templates一样简单,也可以像使用Reflection.Emit在运行时创建类一样复杂。

我会从this Wikipedia article开始。

+0

谢谢,这是一个不错的开局。我认为模板和模板处理器的概念将有所帮助,特别是如果我想支持多种目标语言 – 2010-06-28 18:05:10

0

我不确定代码生成需要什么功能,但我使用的UML工具在其代码生成中并不十分复杂。

我已经使用的工具只是简单地创建文件并使用从输入派生的参数将您的函数名称放入它们中。这不需要任何编译器的理解。大多数困难将出现在用户界面中,以及如何存储数据以使代码生成变得简单。

+0

对于开始我也在寻找如您所提及的最基本的代码生成,但我想知道是否有任何标准方法或做这样的做法,以便它可以使我无法重新发明轮子并使我的项目更具可扩展性,对于初学者,我会尝试仅支持Java这样的1种语言,并具有可扩展的实现,我可以支持其他语言很麻烦。 – 2010-06-28 18:14:09

1

大多数UML工具生成源代码。这个世代通常比编译器要简单得多。例如,一个类图将有一组数据结构来表示这些类之间的类和链接(继承)。为了生成输出,你可以遍历类对象,并为每个对象用目标语言的语法“打印出”该对象的表示。

2

创建一个UML工具是一个长期的项目。你需要很多才能获得不同于团队中一名成员不同的专业知识。 你的学术项目太雄心勃勃。

一个从未做过的简单项目是从活动或状态图生成代码。您不应该尝试重新创建图形编辑器,因为这非常复杂,只能使用xml解析器从xmi导出并生成代码。这将是一个很好的6个月项目你的论文:-)

+0

+1为新的想法:)。 – 2010-06-30 14:55:29

相关问题