写在最前面
原创翻译:转载可不说明出处。但至少带上偶下面的G4宣传语。
eRedG4:一个基于Java技术的开放源代码的、面向企业计算环境下异构系统集成与行业应用快速二次开发的平台。
演示:http://web230531.host89.chinajsp.net
下载:http://code.google.com/p/g4-xiongchun/downloads/list
第一章:XText概述
1.1. XText是什么?
XText可以帮助你创建一套基于文本的小型领域特定语言(DSL),亦或是实现一门成熟的通用的计算机程序设计语言。总而言之,使用XText您可以立刻着手创建一套完全属于你所有的语言。(多么兴奋的一件事啊[译者注]) 而且,如果你已经实现了一套语言,但它又没有良好的工具支持,那么你可以在极短的时间内使用XText为其创建一个基于Eclipse的精致的开发环境(诸如具备代码辅助、代码高亮的代码编辑器等)。我们可以称XText为“语言开发框架“。
1.2. XText基本原理
XText为你提供了一组领域特定语言(DSL)和模型(Model)的编程接口(APIs),用以描述你所构建语言的不同方面。这样一来,你便可以将你的语言很好的实现并运行在Java虚拟机上。语言的编译器组件是不依赖于Eclipse或者OSGI的,可以被方便的移植到任何Java环境上。它包含语法分析器(parser)、类型安全抽象语法树(AST)、serializer、代码格式化程序(Code Formatter)、域框架以及链接程序、编译检查和静态分析或者说是验证器还有最后一个但很重要的代码发生器和解释器。这些运行时组件和基于Eclipse的模型框架(EMF)结合在一起,便可以使你有效的将XText和其它EMF框架比如,图形化模型框架(GMF)一起使用。
除了这个精妙的运行时架构,你还将得到为你设计的语言专门量身定做的一个基于Eclipse的基础开发环境。XText已经为你实现了一套缺省的功能强大的IDE功能,当然你也可以非常容易的对DSL以及APIs进行定制和修改。如果你认为不够灵活的话,也可以基雨于Guice(Google发布的轻量级依赖注入框架)自己实现。
1.3. XText超强灵活性
XText使用轻量级的依赖注入框架Google Guice构建语言以及IDE的底层架构。一个重要的外部组件被作为依赖注入(DI)的配置容器。就像上文提到过的一样,XText提供了很好的缺省IDE实现、DSLs以及APIs并可以很方便的定制。但如果你想实现一些非常个性化的东西,那Goolge Guice也给你提供了一种强大的非侵入式的方法。
1.4. XText的应用领域
XText有着非常广泛的应用,比如:手机备、汽车智能设备、嵌入式系统、Java企业级应用以及游戏开发等领域。人们使用基于XText的语言去驱动诸如:Java、C\C++、C#、Obj-C、Python、Ruby等目标语言。尽管这种语言本身架构运行于Java虚拟机(JVM),但是你依然可以将XText语言编译到任何目标语言平台上去。基于XText的语言在很多知名的开源项目中都有应用:Maven、Eclipse B3、Eclipse WTP、Google缓冲协议、甚至在搜索引擎项目中也有应用。
1.5. 谁在支持XText
Xtext是一个专业的开源项目。我们,这个项目的主要开发人员和领导者供职于一家以基于模型开发而闻名的咨询公司:itemis。因此,我们基本上是全职开发和支持这个项目。XText是Eclipse.Org开源基金会旗下的一个项目,除了常规意义下的一些好处之外,你不必担心XText会带来任何的版权争议,因为Eclipse基金会有它们专职律师会小心呵护这些知识财富不被非法使用。
或许你会有这样的质疑:支持我们进行开源开发的经费从何来呢?我们提供围绕XText周边的一些有偿的专业级服务,例如:培训、现场咨询、原型开发或者是IDE开发。我们不但对XText了如指掌,而且也是程序设计和领域特定语言设计的骨灰级老鸟。别再犹豫,快和我们取得联系吧!(http://www.itemis.com)
1.6.什么是领域特定语言(DSL)?
领域特定语言(DSL)是一种小型的计算机编程语言,它关注于某一个应用领域,几乎任何一个事物对象都可以作为我们研究的一个领域。他的理念就是用尽可能接近于真实领域思考问题和解决方案的概念以及表示方法来描述。这样,我们所思考的问题便能由计算机以某种方式得到解决或处理。
和领域特定语言(DSL)相反的一种语言被称做通用语言(GPL:General purpose Language),比如Java、C/C++以及其它常见的编程语言。使用这些通用语言,你可以解决任何计算问题,但并不一定是最好的解决办法。
设想一下,你想把果核从一个苹果中摘除,那么你当然可以使用瑞士军刀将其抠除。如果你只是进行一两次这样的操作,那显然是合乎情理的。但如果你是需要去除无限多个苹果的果核,那你应该使用苹果去芯机才是最明智的选择。
分享到:
相关推荐
xtext-standalone-maven-build:Xtext独立的maven构建,不带Eclipse
了解如何使用易于理解的示例和最佳实践,使用xtext和Xtend来实现DSL。
Eclipse Xtext:trade_mark: Eclipse Xtext是用于开发编程语言和的框架。 它涵盖了完整语言基础结构的所有方面,从解析器,链接器,编译器或解释器,到用于Eclipse和基于Web的IDE的功能完善的顶级IDE集成。 此外,...
使用Xtext和Xtend来开发特定领域语言.包括实现IDE编辑环境(语法高亮,快速更正,语法检查等),实现独立的编译器
使用Xtext和Xtend来开发特定领域语言.包括实现IDE编辑环境(语法高亮,快速更正,语法检查等),实现独立的编译器
Xtext Tycho示例这是一个演示项目,显示了如何使用tycho / maven构建Xtext项目。 它具有以下特点: 项目基于Xtext和Xtend 2.7.3 在fornax mwe2插件的帮助下从Maven运行xtext生成器mwe2工作流程生成的文件未检入,...
使用Xtext和Xtend来开发特定领域语言.包括实现IDE编辑环境(语法高亮,快速更正,语法检查等),实现独立的编译器
Xtext 2.0 的文档。描述了Xtext2.0的新特性。
Xtext-Xtend-Buckminster-Example 如何使用 Buckminster 构建 Xtext/Xtend 项目; 特别是使用 Xtend 编译器,这样您就不需要将生成的 Java 文件存储在存储库中。 此示例在此博客文章中进行了描述: :
使用Xtext和Xtend来开发特定领域语言.包括实现IDE编辑环境(语法高亮,快速更正,语法检查等),实现独立的编译器
xtext基础入门说明资料
使用Xtext和Xtend来开发特定领域语言.包括实现IDE编辑环境(语法高亮,快速更正,语法检查等),实现独立的编译器
a tutorail for Xtext to develop your own DSL
[Packt Publishing] 领域特定语言 (Xtext & Xtend 实现) (英文版) [Packt Publishing] Implementing Domain-Specific Languages with Xtext and Xtend (E-Book) ☆ 图书概要:☆ Learn how to implement a DSL ...
Learn how to implement a DSL with Xtext and Xtend using easy-to-understand examples and best practices About This Book Leverage the latest features of Xtext and Xtend to develop a domain-specific ...
org.xtext.example.statemachine :所述的statemachine的Xtext语言(一个例子的Xtext语言的变型)和运行时代码(解析器,串行化器等)的定义org.xtext.example.statemachine.ui :对的statemachine语言的文本编辑器...
使用Xtext和Xtend来开发特定领域语言.包括实现IDE编辑环境(语法高亮,快速更正,语法检查等),实现独立的编译器
Xtext 2.0.0 JavaDoc
Xtext是一个真正的实现编程语言的开源框架。它使用了人们熟知的方法来实现语言,比如解释器、符号表、编译器等。
使用 Xtext 和 Xtend 实现领域特定语言 此存储库包含本书示例的来源“使用 Xtext 和 Xtend 实现领域特定语言” ISBN:978-1782160304 勘误表和 Xtext 新版本的变化 这本书是使用 Xtext 2.4.2 编写的,并且在新版本的...