使用Xtext开发DSL
由于工作中使用到了Xtext,所以学习下其使用。
本文基于eclipse官网关于Xtext的介绍-15分钟手册,感兴趣的可以直接阅读原文
https://www.eclipse.org/Xtext/documentation/102_domainmodelwalkthrough.html
那么如何使用Xtext开发呢?
工欲善其事,必先利其器。
如果没下载过eclipse的,可以直接下载带有XText版本的eclipse;已经安装eclipse的,可以使用软件安装的方式。博主使用的第二种直接从网站更新安装对应插件的。
下载地址:https://www.eclipse.org/Xtext/download.html
好了,万事俱备,下面就让我们跟着官网的例子,创建一个简单的demo吧
1. 首先创建一个xtext的项目
File-New-Xtext Project,填入需要的信息
点击finish后,会生成5个工程,其中只要关注com.page.demo.xtext这个工程,其他工程中目录内都是空的
2. 修改语法文件MyDsl.xtext
改文件在com.page.demo.xtext工程中
grammar com.page.demo.xtext.MyDsl with org.eclipse.xtext.common.Terminals generate mydsl "http://www.page.com/demo/xtext/MyDsl" MyDsl: (elements+=Type)*; Type: DataType | Entity; DataType: 'datatype' name=ID; Entity: 'entity' name=ID ('extends' superType=[Entity])? '{' (features+=Feature)* '}'; Feature: (many?='many')? name=ID ':' type=[Type];
3. 生成Language Artifacts
在xtext文件中,右键Run As-Generate Xtext Artifacts,这会生成解析器、编辑器等部分的代码
4. 启动新的eclipse实例
在com.page.demo.xtext项目上右键,Run As-Eclipse Application,启动一个新的eclipse实例。在这个实例中创建一个java工程,再在其中新建一个mydsl为后缀的文件。
编写该文件,可以发现其可以高亮显示,及语法校验等
datatype String entity Blog { title: String many posts:Post } entity HasAuthor { author:String } entity Post extends HasAuthor { title:String content:String many comments:Comment } entity Comment extends HasAuthor { content:String }
grammar com.page.demo.xtext.MyDsl with org.eclipse.xtext.common.Terminals
generate mydsl "http://www.page.com/demo/xtext/MyDsl"
MyDsl: (elements+=Type)*; Type: DataType | Entity; DataType: 'datatype' name=ID; Entity: 'entity' name=ID ('extends' superType=[Entity])? '{' (features+=Feature)* '}'; Feature: (many?='many')? name=ID ':' type=[Type];
分类:
eclipse插件开发
标签:
xtext
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现