3

ATL 是一种转换语言,允许进行模型到模型的转换,但我想知道是否可以使用这种转换语言进行文本到模型的转换(已经定义了 Ecore 元模型),或者我必须使用另一种转换语言.

如果 ATL 无法实现,那么转换语言是什么?

4

2 回答 2

2

这称为“逆向工程”或“设计恢复”,具体取决于模型的抽象程度。

要将“文本”转换为模型,您需要该文本的解析器,无论它是什么。通常,该文本是为了充分展示一种编程语言。如果您的文本是 COBOL、Java 或 C++,那么您需要针对这些语言的完整解析器,而且它们不容易构建,因为这些语言比您想象的大、复杂且文档较少,然后您就可以处理了具有供应商特定的变体。

解析器也不够。模型元素表示具有它们之间关系的实体(例如,具有“包含”、“使用”、“调用”关系的类)。这些关系需要从代码中提取,因此需要对代码进行静态分析以提取这些事实。您必须用“某种”语言编写此分析。

完成此类任务的理想工具是程序转换 (PT) 系统。这些工具接受语言定义,解析源代码构建 AST(一种编译器数据结构),并可以转换代码,和/或分析代码以提取感兴趣的关系,通常以特定于 PT 系统的 DSL 编写。AFAIK,DMS(我公司的 PT 系统)是唯一一个拥有成熟的通用语言解析器的系统。YMMV。

于 2014-01-21T17:46:30.110 回答
1

EMFText,Xtext。

我使用第一个来实现XPath 2 打印机和解析器这里也有很多例子。

于 2014-03-20T07:40:25.610 回答