xtext

How to JvmModelInferrer method body from XExpression and append boilerplate code

好久不见. 提交于 2021-01-29 09:50:37
问题 In a JvmModelInferrer, when constructing the body of a method or constructor, how do you insert both an XExpression from the grammar body = op.body and additional "boilerplate" code, for example body = [ append( ''' System.out.println("BOILERPLATE"); ''' ) ] I can achieve either but not both. For a minimal working example, consider the following canonical Xbase grammar, grammar org.example.xbase.entities.Entities with org.eclipse.xtext.xbase.Xbase generate entities "http://www.example.org

Indent lines of text (EString) using Xtext formatting API

耗尽温柔 提交于 2021-01-29 08:22:29
问题 What is the appropriate way to indent a block of text which consists of multiple lines of EString? Please consider the following scenario. Test Case @Test def void indentNarrative() { val toBeFormatted = ''' Feature: The quick brown fox Jumps over The lazy dog ''' val expectation = ''' Feature: The quick brown fox Jumps over The lazy dog ''' assertFormatted(toBeFormatted, expectation) } Formatter Implementation def dispatch void format(Feature feature, extension IFormattableDocument document)

Conflicting project in Xtext mwe2 workflow

守給你的承諾、 提交于 2021-01-29 03:15:20
问题 I have a Xtext DSL that builds successfully from inside eclipse and maven and is included in a complex multi-plugin RCP application. Yet, whenever the MWE2 workflow is executed the log is full of warnings of the form: [INFO] 281 [main] WARN lipse.emf.mwe.utils.StandaloneSetup - Skipping conflicting project org.eclipse.e4.core.contexts at 'archive:file:/C:/userdir/.m2/repository/p2/ osgi/bundle/org.eclipse.e4.core.contexts/1.3.100.v20140407-1019 /org.eclipse.e4.core.contexts-1.3.100.v20140407

react-native-easy-app 详解与使用之(一) AsyncStorage

让人想犯罪 __ 提交于 2020-08-13 06:41:10
react-native-easy-app 是一款为React Native App快速开发提供基础服务的纯JS库( 支持 IOS & Android ),特别是在从0到1的项目搭建初期,至少可以为开发者减少30%的工作量。 react-native-easy-app 主要做了这些工作: 1. 对AsyncStorage进行封装,开发者只需几行代码即可实现一个持久化数据管理器。 2. 对fetch进行封装,使得开发者只需关注当前App的前后台交互逻辑和协议,定义好参数设置及解析逻辑即可。 [3. 重新封装了RN的View、Text、Image、FlatList 使用得这些控件在适当的时候支持事件或支持icon与文本,能有效减少布局中的嵌套逻辑。]() [4. 通过设置一个屏幕参考尺寸,重置XView、XText、XImage的尺寸,实现自动多屏适配]() 可能有人觉得,RN的AsyncStorage本身就很简单,自己封装也就几十行代码的工作量,为什么还要使用第三方库? 一千个人心中,有一千个哈姆雷特,也许我的封装思路能给你带来不一样的启发也未可知呢? 数据存储(AsyncStorage) RN平台提供的AsyncStorage有一些基础方法:setItem,getItem,removeItem,getAllKeys

react-native-easy-app 详解与使用之(三) View,Text,Image,Fl

丶灬走出姿态 提交于 2020-08-05 05:22:56
react-native-easy-app 是一款为React Native App快速开发提供基础服务的纯JS库( 支持 IOS & Android ),特别是在从0到1的项目搭建初期,至少可以为开发者减少30%的工作量。 react-native-easy-app 主要做了这些工作: 1. 对AsyncStorage进行封装,开发者只需几行代码即可实现一个持久化数据管理器。 2. 对fetch进行封装,使得开发者只需关注当前App的前后台交互逻辑和协议,定义好参数设置及解析逻辑即可。 3. 重新封装了RN的View、Text、Image、FlatList 使用得这些控件在适当的时候支持事件或支持icon与文本,能有效减少布局中的嵌套逻辑。 4. 通过设置一个屏幕参考尺寸,重置XView、XText、XImage的尺寸,实现自动多屏适配 可能有人觉得,不同的App有不同的风格UI也完全不一样,除非是特定需求的UI,基础功能的UI直接写就行了,还需要封装么? 一千个人心中,有一千个哈姆雷特,也许我的封装思路能给你带来不一样的启发也未可知呢? 简单UI(XView,XText,XImage) 1、事件支持 View,Text,Image作为使用频率最高的三个组件,并不支持我们最常使用的onPress事件,我们要使用onPress事件时

react-native-easy-app 详解与使用之(一) AsyncStorage

青春壹個敷衍的年華 提交于 2020-07-28 04:29:26
react-native-easy-app 是一款为React Native App快速开发提供基础服务的纯JS库( 支持 IOS & Android ),特别是在从0到1的项目搭建初期,至少可以为开发者减少30%的工作量。 react-native-easy-app 主要做了这些工作: 1. 对AsyncStorage进行封装,开发者只需几行代码即可实现一个持久化数据管理器。 2. 对fetch进行封装,使得开发者只需关注当前App的前后台交互逻辑和协议,定义好参数设置及解析逻辑即可。 3. 重新封装了RN的View、Text、Image、FlatList 使用得这些控件在适当的时候支持事件或支持icon与文本,能有效减少布局中的嵌套逻辑。 4. 通过设置一个屏幕参考尺寸,重置XView、XText、XImage的尺寸,实现自动多屏适配 可能有人觉得,RN的AsyncStorage本身就很简单,自己封装也就几十行代码的工作量,为什么还要使用第三方库? 一千个人心中,有一千个哈姆雷特,也许我的封装思路能给你带来不一样的启发也未可知呢? 数据存储(AsyncStorage) RN平台提供的AsyncStorage有一些基础方法:setItem,getItem,removeItem,getAllKeys,这些是promise模式的并且AsyncStorage只支持对纯字符串的存取

Xtext DSL embedded editor in a dialog

匆匆过客 提交于 2020-07-18 05:28:20
问题 I am new to xtext, and i have created a DSL using xtext and i have generated the artifacts, which has generated the editor which has many features like content assist and syntax coloring now the problem is i want to embed the editor inside a dialog. For achieving this im using EmbeddedEditor, i am able to get the embedded editor and place it in the dialog, but the embedded editor is not displaying the contents of the file. The file C:/Eclipse_Work/workspace/runtime_workspace/apa/ex.mydsl

2018-01-19 Xtext试用: 快速实现简单领域专用语言(DSL)

我与影子孤独终老i 提交于 2020-04-29 14:47:51
环境搭建 使用的Eclipse版本: Oxygen.1a Release (4.7.1a) Build id: 20171005-1200, 通过添加 Xtext - Download 上列出的Releases update site安装xtext IDE和xtext SDK. 之后打开Eclipse, 打开任何文件就报错: An error has occurred. See error log for more details. loader constraint violation: loader (instance of org/eclipse/osgi/internal/loader/EquinoxClassLoader) previously initiated loading for a different type with name "org/aspectj/runtime/internal/AroundClosure" 为避免现有插件和它的冲突, 新安装了更新版Eclipse: Version: Oxygen.2 Release (4.7.2) Build id: 20171218-0600 官方教程原代码试用 首先, 参考官方教程: 15 Minutes Tutorial 教程按部就班, 基本没有问题. 唯一碰到的坑是最后将一个dsl文件拆分成多个时,

开发者需要了解的领域特定语言(DSL)

牧云@^-^@ 提交于 2020-03-04 15:12:12
领域特定语言是在特定领域下用于特定上下文的语言。作为开发者,很有必要了解领域特定语言的含义,以及为什么要使用特定领域语言。 领域特定语言domain-specific language (DSL)是一种旨在特定领域下的上下文的语言。这里的领域是指某种商业上的(例如银行业、保险业等)上下文,也可以指某种应用程序的(例如 Web 应用、数据库等)上下文。与之相比的另一个概念是 通用语言general-purpose language (GPL,LCTT 译注:注意不要和 GPL 许可证混淆),通用语言则可以广泛应用于各种商业或应用问题当中。 DSL 并不具备很强的普适性,它是仅为某个适用的领域而设计的,但它也足以用于表示这个领域中的问题以及构建对应的解决方案。HTML 是 DSL 的一个典型,它是在 Web 应用上使用的语言,尽管 HTML 无法进行数字运算,但也不影响它在这方面的广泛应用。 而 GPL 则没有特定针对的领域,这种语言的设计者不可能知道这种语言会在什么领域被使用,更不清楚用户打算解决的问题是什么,因此 GPL 会被设计成可用于解决任何一种问题、适合任何一种业务、满足任何一种需求。例如 Java 就属于 GPL,它可以在 PC 或移动设备上运行,嵌入到银行、金融、保险、制造业等各种行业的应用中去。 DSL 的类别 从使用方式的角度,语言可以划分出以下两类: DSL:使用

xtext importURI external file

旧时模样 提交于 2020-01-17 03:59:17
问题 i am very lost with how importing global scope is working. I am writing a parser with xtext for a well structure language and I cannot depend on workspace or project concepts. In my language I have include statements which can have relative or absoloute paths of another file. I need to be able to reference objects defined in this other file. I tried using importURI but it doesn't work. All I tried was to add this rule: Include: 'INCLUDE' '=' importURI=STRING ';' ; and changed the MWE2 file in