写在最前面
原创翻译:转载可不说明出处。但至少带上偶下面的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框架,以及在Eclipse中创建第一个DSL示例。Xtext利用了Eclipse平台强大的插件和扩展机制,提供了对DSL的全方位支持,包括语法定义、语法高亮、代码补全、错误检查、代码重构...
Xtext是一种强大的文本建模框架,它允许开发者创建自己的领域特定语言(DSL)并自动生成相关的解析器、编译器和IDE支持。在本项目"Xtext Standalone Maven Build"中,重点在于如何使用Maven独立于Eclipse环境来构建...
Eclipse Xtext:trade_mark: Eclipse Xtext是用于开发编程语言和的框架。 它涵盖了完整语言基础结构的所有方面,从解析器,链接器,编译器或解释器,到用于Eclipse和基于Web的IDE的功能完善的顶级IDE集成。 此外,...
Xtext是Eclipse基金会下的一个项目,它允许开发者使用简单的注解快速定义领域特定语言(DSL),并为其生成完整的编程语言编辑器。Xtend是一种基于JVM的语言,它简化了Java代码的编写并提供了与Java的互操作性,可以...
【Xtext和Xtend测试】章节探讨了如何利用JUnit框架和Xtext提供的工具进行特定领域语言(DSL)的测试,确保DSL实现的稳定性和质量。测试是软件开发中的重要环节,它能辅助开发者创建出高质量的代码。尽管测试不能完全...
第9章“类型检查”和第10章“作用域”将进一步阐述如何实现这些自定义验证器,以及如何利用它们来处理如类型检查和名称作用域等更复杂的问题。 通过自定义验证器,开发者能够确保DSL用户遵循特定的业务规则,例如,...
使用Xtext的第一步就是创建一个新的项目。通过向导可以快速生成一个Xtext项目,它包含了一个基本的语言结构和示例代码。 #### 编写自己的文法 定义语言的文法是创建DSL的关键步骤。用户需要定义语言的基本结构,...
**3.1 第一个例子** 为了更好地理解Xtext的语法语言,本节提供了一个简单的例子。通过这个例子,读者可以了解语法的基本结构和特点。 **3.2 语法** **3.2.1 语言声明** 每个Xtext语法文件都以`grammar`关键字...
在第五章中,我们专注于使用Xtext和Xtend来实现代码生成,这是域特定语言(DSL)开发中一个重要的环节。DSL允许开发者专注于特定的业务领域,而Xtext和Xtend则是实现这些语言的强大工具。Xtext框架能够帮助我们构建...
**:Xtext是一个用于创建文本编辑器和其他语言工具的框架。 - **工作原理**:Xtext通过定义语言的语法结构,自动生成相应的编辑器、代码生成器等组件。 - **高度可配置性**:Xtext允许开发者对语言的各个方面进行...
2. **.xtext语法定义**:Xtext使用Ecore模型来定义语言的语法,这是一种元模型表示,可以被Eclipse Xtext用来生成解析器和编辑器。开发者可以通过编写.xtext文件,用类似EBNF(扩展巴科斯范式)的语法定义DSL。 3. ...
首先,我们从创建第一个Xtext项目开始。Xtext项目向导是创建DSL项目的起点,它允许开发者指定项目名称、包名和文件扩展名。例如,我们创建了一个名为“org.example.entities”的项目,其中包含了语法定义、独立于UI...
Xtext Tycho示例这是一个演示项目,显示了如何使用tycho / maven构建Xtext项目。 它具有以下特点: 项目基于Xtext和Xtend 2.7.3 在fornax mwe2插件的帮助下从Maven运行xtext生成器mwe2工作流程生成的文件未检入,...
使用Xtext和Xtend来开发特定领域语言.包括实现IDE编辑环境(语法高亮,快速更正,语法检查等),实现独立的编译器
总结起来,Xtext 2.7.3是一个全面的工具集,它简化了编程语言的创建过程,通过解释器、符号表和编译器等功能,为开发者提供了一个高效、灵活的平台,以实现自己的编程语言。无论是在学术研究还是企业开发中,Xtext都...
1. **下载插件**: 首先,你需要从可靠的源(如Eclipse Marketplace、官方网站或其他第三方仓库)下载xtext 2.7.0的插件包。 2. **解压插件**: 下载的插件通常为`.zip`或`.jar`格式,将其解压到一个临时目录。 3. **...
一、Xtext概述 Xtext是一个基于Java的库,其设计目标是简化DSL的创建过程,通过提供语法定义、代码生成、编译器构建以及IDE集成等一系列工具。Xtext支持从简单的标记语言到复杂的类型系统,让开发者能够构建出易于...
Xtext-Xtend-Buckminster-Example 如何使用 Buckminster 构建 Xtext/Xtend 项目; 特别是使用 Xtend 编译器,这样您就不需要将生成的 Java 文件存储在存储库中。 此示例在此博客文章中进行了描述: :
在本章中,我们将深入探讨如何使用Xtext和Xtend构建一个表达式DSL,它支持算术、布尔和字符串表达式。Xtext是一个强大的工具,用于生成领域特定语言(DSL)的语法和IDE,而Xtend则用于实现DSL的业务逻辑。我们将通过...
[Packt Publishing] 领域特定语言 (Xtext & Xtend 实现) (英文版) [Packt Publishing] Implementing Domain-Specific Languages with Xtext and Xtend (E-Book) ☆ 图书概要:☆ Learn how to implement a DSL ...