首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xtext: AST、Metamodel和解析树之间的关系

xtext: AST、Metamodel和解析树之间的关系
EN

Stack Overflow用户
提问于 2013-01-20 05:50:01
回答 1查看 1.3K关注 0票数 3

有人能给我解释一下解析树、AST和元模型之间的关系吗?到目前为止,我知道xtext从语法派生出EMF Ecore元模型,并使用antlr生成解析器。但是它将如何被解析:输入首先通过lexer,然后解析器根据解析器规则创建解析树,对吧?在解析树之外,Xtext还创建了一个AST?为了什么?在这种情况下,元模型有什么用途?我对所有的定义都有点困惑。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-24 04:48:05

解析过程分为三个步骤:首先,lexer从输入流开始,然后创建基于Antlr的解析树,最后Xtext从解析树生成基于EMF的AST。前两步对于每个解析器(生成器)来说都是很自然的,第三步需要一些解释。我将以一些动机开始有点冗长的解释,然后我将简要介绍一下元模型和EMF的一般情况。

首先,生成的解析器不支持标识符解析(处理变量或函数调用所需),这些函数需要手动添加,因此几乎所有语言都需要手动编码的后处理步骤,这需要扩展现有的解析树。

其次,EMF为其模型提供了一个很好的、类型安全的API,以及一个强大的反射API,它允许创建非常通用但有用的组件,以简化模型的处理(例如,代码生成器,如AcceleoXtend的一个方面,模型转换工具,如ATLETLVIATRA2)。我不能确切地说出Antlr和EMF的解析树API之间的区别,但是我使用过LPG解析器生成器的API,在我看来,EMF更容易使用。

更好的是,EMF的使用允许与其他基于EMF的编辑器(例如基于GMF的图形编辑器)一起重用富Xtext功能。有关基本思想,请参阅早期的EclipseCon演示文稿:TMF meets GMF - Combining Textual and Graphical Modeling

一般来说,如果我们需要用解析信息扩展我们的解析树,那么通过重用已经使用的范例可以简化我们的语言与其他工具的集成。

EMF依赖于元建模的概念:我们必须定义模型中可用的元素集,以及其他约束,例如关于连接性的信息。这个概念类似于XML的模式定义(如DTD或SML Schema) --我们有一种统一的方法来描述模型。Xtext与EMF以多种方式协同工作:

  • 首先,它根据语法生成并注册一个EMF元模型,该模型可用于每个基于EMF的工具。
  • 然后,解析过程的最终结果是一个EMF,可以使用EMF读取和修改该模型-更改将被序列化为文本形式。

我希望,答案是足够清楚的。如果需要,请随时要求更多的澄清。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14419244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档