将语言文本转换为模型

时间:2014-01-21 15:16:51

标签: eclipse dsl epsilon eclipse-atl

ATL是一种转换语言,它允许模型转换模型,但是我想知道使用这种转换语言是否可以将文本转换为模型转换(已经有一个定义的Ecore元模型)或者我必须要处理另一种转换语言。

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

2 个答案:

答案 0 :(得分:2)

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

要将“text”转换为模型,您需要该文本的解析器,无论它是什么。 通常,该文本是完全荣耀的编程语言。如果您的文本是COBOL,Java或C ++,那么您需要完全解析这些语言,并且它们不容易构建,因为这些语言比您想象的要大,复杂且记录不完善,然后您可以处理使用特定于供应商的变体。

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

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

答案 1 :(得分:1)

EMFText,Xtext。

我用第一个来实现XPath 2 printer and parser。还有很多例子here