【问题标题】:Transformation Language Text to Model将语言文本转换为模型
【发布时间】:2014-01-21 15:16:51
【问题描述】:

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

如果不能使用 ATL,那么转换语言是什么?

【问题讨论】:

    标签: eclipse dsl epsilon eclipse-atl


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

      EMFText,Xtext。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-02
        • 2023-04-08
        • 2012-05-08
        • 1970-01-01
        相关资源
        最近更新 更多