Gemoc创建特定领域建模语言步骤(简略版)

领域特定语言(Domain-Specific Language, DSL)在 Visual Studio 2022中的实验——建立领域模型 域特定语言(Domain-Specific Language,DSL)是一种表示法,通常用图表示,其表示方法与UML中的类图相近,旨在用于特定目的。 阅读详情

起步

该文用于使用Gemoc这一基于Eclipse的特定领域语言(Domain Specific Language,dsl)创建平台进行创建dsl的操作步骤,参考了使用Gemoc创建一个fsm。使用的Gemoc版本是2.4.0-SNAPSHOT. 由于步骤繁琐,本文仅用于提醒自己以及同学在遗忘之际回忆之用,不会提供过多细节讲解,还望周知。

语言工作台步骤

1.首先创建Ecore元模型,同时也称作是dsl的抽象语法

 2.在编辑好ecore文件后,即定义好dsl中的必要元素后,右键点击model.genmodel,并Generate All。系统会自动生成edit editor tests 三个项目。

3.新建一个Viewpoint Specification Project项目,并修改description下的odesign文件,在这里定义dsl的具体语法。

4.新建一个GEMOC Sequential xDSML Project项目,叫做ecnu.csl

注意在创建过程中,在最后步骤中,要选择Ecore file location,这里选择我们刚刚定义好的Ecore项目中的model.ecore文件,K3 DSA Project name此时可以不选择。

创建完成后,打开src目录下的.elange文件,为了使该组装语言能够被其他项目继承,在language 之前加上external 关键字。并右键点击Melange,进行clean All, Generate All。

5.接下来创建第二个GEMOC Sequential xDSML Project项目ecnu.xcsl,第一步与4类似。然后添加对上一个xDSML ProjectMelange文件的依赖,如下图所示。

此时项目会报错,因为没有添加对ecnu.csl的依赖,现在添加,方法是通过META-INF文件下的MANIFEST.MF添加eclipse插件依赖。

之后,我们创建DSA项目,即dsl的操作语义。右键Xcsl.melange,添加DSA project,如下图所示。(注意在创建过程中,要选择正确的Ecore model文件)

在新建的DSL项目中,编写操作语义。并根据需要添加外部的插件依赖。(因为该项目是作为eclipse的插件进行运行的,不能通过传统的classpath添加jar包依赖,而应该通过META-INF文件下的MANIFEST.MF添加eclipse插件依赖<把想依赖的jar包发布为eclipse插件>)

6.回到ecnu.xcsl项目,选择.melange文件,通过alt+/快捷键添加对DSA的依赖,如下图所示

最后,我们对ecnu.xcsl右键melange,并clean all,generate all。

 

7.至此,整个语言工作台的建模工作就完成了。此时可以启动另一个eclipse平台,试试添加使用dsl建模的模型。

建模工作台步骤

1.新建一个Modeling Project

2.在该项目中新建一个Model Model,如下图所示。Model Model是我们在创建ecore modeling project时指定的。

注意在Model Object选择步骤,要选择ecore 元模型的根结点,在我们的元模型中,Cosimulation System是根结点。

4.右键项目,添加Viewpoints Selection

5.右键项目,添加Representation Wizard

 

6.然后就可以在自动心打开的.aird文件进行模型编辑了。

 

总结

以上就是本文内容,dsl能够对领域内的知识进行高度抽象,简化了建模人员的操作,提高了建模效率,对于一切想要脱离底层实现并进行高级抽象,以便让更多的领域专家能够参与模型设计、开发的工作人员来说,都是一个不错的选择。

浅谈领域特定语言 0 序言 近年来,随着移动应用、人工智能、区块链、量子计算、芯片逻辑、音乐工程等领域的蓬勃发展,软件在各行各业的应用得到爆发式的增长,各行各业的研究人员和领域专家加入到软件开发的队伍,比如:芯片研发工程师需要通过编程来写芯片逻辑,人工智能算法研究人员需要通过编程写计算逻辑,音乐工程师需要通过编程构建音乐的交互式系统。这些领域专家不是计算机科班出身,但是他们对自己的领域研究非常深入,他们非常期待能有一门面向领域的编程语言来帮助他们屏蔽计算机底层的复杂度,聚焦自己的领域,高效的进行编程。 在这样的背景下,. 阅读详情

相关推荐

根据ECore元模型创建模型

根据我们之前创建的元模型(meta model)

青铁的专栏 1605

GEMOC Studio 模型调试指南

GEMOC Studio 模型调试指南 项目介绍 GEMOC Studio 是一个基于Eclipse平台的高级语言和建模工作台,它致力于支持可执行建模语言的开发、集成与运用。通过结合Sirius和Eclipse Modeling Framework(EMF),该项目为领域特定工具提供了运行时调试与仿真功能。GEMOC Studio的核心特性包括元编程方法和执行引擎,允许设计并执行模型的行为语义。这...

gitblog_00339的博客 829

1、领域特定语言(DSL)助力通用软件系统人机界面建模

本博文围绕领域特定语言(DSL)在通用软件系统人机界面建模中的应用展开研究,提出了一种支持DSL自动演变的创新方法——投影方法。通过形式化DSL演变过程、构建基于图转换的跨模型转换机制,实现了领域语义模型(DSM)与DSL元模型的一致性演化。研究开发了‘火车站资源分配’和‘招生委员会’两个领域的软件原型,验证了该方法在减少修改时间、降低手动代码量、提升系统灵活性方面的有效性。成果为DSL全生命周期管理提供了理论基础与实践工具,尤其适用于智能系统与网络物理系统等动态环境。

beer8的博客 68

Sirius 框架和概念

sirius框架

aloe_lh的博客 970

编程语言发展史之:领域特定语言

领域特定语言(Domain-Specific Languages,DSL)的出现在1996年左右,并非起源于计算机科学,而是基于语言理论发展而来的一种新的编程范式。它不是一种独立的语言,而是一个提供给某一类特定的领域的命令集合,用来简化该领域的程序开发过程。例如,汇编语言只针对处理机器指令、数据的低级控制流,而高级语言则适用于面向对象的编程、数据结构设计等更高层次的抽象。DSL的发明使得程序员不用过多关注底层实现细节,可以专注于业务逻辑的实现,极大的降低了程序员的门槛。

AI天才研究院 629

STM32F4用FSMC驱动AX58100 EtherCAT从站芯片,保姆级配置流程与避坑指南

本文详细介绍了STM32F4通过FSMC接口驱动AX58100 EtherCAT从站芯片的完整配置流程,包括硬件连接、时序优化、协议栈移植及TwinCAT主站集成。针对工业自动化场景,提供高性价比的实时控制解决方案,特别适合机械臂、CNC机床等精确同步应用,并分享关键调试技巧与性能优化方法。

weixin_27869497的博客 306

如何设计领域特定语言,实现终极业务抽象?

在过去的几年里,我一直从事于各种领域定义语言的设计,包含 unflow、guarding、datum、forming 等。在我刚入门这个领域的时候,我从《领域特定语言》、《编程语言实现模式...

Phodal's zenthink 4815

从零到一:构建嵌入式Arm-Linux的Qt MQTT通信框架全指南

本文详细指导如何在嵌入式Arm-Linux平台上从零构建Qt MQTT通信框架,涵盖交叉编译、环境配置、依赖库管理及性能优化。重点针对32位Arm架构,提供完整的工具链配置、编译步骤和实战部署方案,适用于物联网和工业控制等场景。

w8x9y0z1的博客 1000

走近“领域特定语言”(Domain-Specific Languages)

领域特定语言(Domain-Specific Languages,简称DSL),是一个很有用的术语和概念,但其边界很模糊。一些东西很明显是DSL,但另一些可能会引发争议。本文接下来就走近“领域特定语言”,了解它的概念、为何要采用DSL,以及使用时应该注意的问题。 1.定义DSL 领域特定语言(名词),针对某一特定领域,具有受限表达性的一种计算机程序设计语言。这一定义包含4个关键元素: 计算机...

华章IT官方博客 1676

手势控制 Python !Leap Motion Python 开发教程 (二)

手势控制 Python !Leap Motion Python 开发教程 (二) 现在进入正题,我来给大家总结一下我在使用 Leap Motion 开发过程中的经验以及学到的东西,其中我会概括以及翻译官方给出的注释,为了让这些注释更加通俗易懂,让大家更好理解。 回顾 在上一篇文章中我们讲了如何配置 Leap Motion 的 Python 2.7 的开发环境,如果您还没有配置好您的开发环境,可以参...

成畅的博客 3193

【PVCodeNet】《Palm Vein Recognition Network Combining Transformer and CNN》

1]吴凯,沈文忠,贾丁丁,等.融合Transformer和CNN的手掌静脉识别网络[J].计算机工程与应用,2023,59(24):98-109.

bryant_meng 1281

领域特定语言的简介及应用

领域特定语言(Domain Specific Language,DSL)是一种专门针对某个特定领域的计算机语言,它旨在解决该领域内的问题,而不是解决通用的问题。与通用编程语言相比,DSL更加关注领域内的问题和需求,提供了更高层次的抽象和更直观的表达方式,从而提高了开发效率和代码质量。通过使用领域特定语言,开发者可以更好地满足特定领域的需求,并提高软件开发的效率和质量。提供更好的错误检测和验证:由于领域特定语言是为特定领域设计的,它可以提供更好的错误检测和验证机制。这样可以大大提高开发效率。

超哥量化的博客 1421

GprMax正演模拟:为什么你的反射波‘消失’了?可能是直达波在捣鬼(附Python后处理脚本)

本文深入探讨了GprMax正演模拟中反射波信号被直达波淹没的现象,并提供了Python后处理脚本的实战指南。通过时域置零、自适应增益控制、频域滤波等多种技术,有效增强反射波信号,帮助用户解决探地雷达模拟中的常见问题。文章还包含详细的代码示例和效果评估方法,适合GPR数据处理的研究人员和工程师参考。

weixin_29305313的博客 232

Java中的DSL(领域特定语言)设计与实现

Java中的DSL设计与实现提供了一种灵活的方式,使得开发者可以根据特定领域的需求设计专用的语言。通过内部DSL和外部DSL,可以实现简洁、直观的领域特定语言,提高代码的可维护性和可读性。内部DSL(Internal DSL)是利用现有语言的语法和功能来创建的领域特定语言。外部DSL(External DSL)是独立于现有编程语言的领域特定语言,需要单独设计语法和解析器。方法链是一种常用的DSL实现方式,通过将多个方法调用链接在一起,实现简洁的DSL语法。DSL的设计应保持一致性,避免混乱的语法规则。

微赚淘客系统开发者博客 2431

脑机接口(BCI)从原理到开发实战 07|运动想象BCI实战:基于BCI Competition IV 2a数据集

本文基于BCI Competition IV 2a数据集,详细介绍运动想象脑机接口系统的全流程实现。首先概述了该数据集的实验范式、参数特点和优势,然后指导环境准备与数据下载。通过代码示例展示了数据加载、事件标记提取和信号可视化方法。重点构建了完整的预处理流水线,包括通道选择、重参考、带通滤波(8-30Hz)和ICA去伪迹等关键步骤。文章旨在帮助读者将零散的BCI知识整合为完整的实战项目,掌握从原始脑电数据到运动意图解码的核心技术。

小明的博客 850

CAD制图

CAD制图可以提高设计效率和准确性,并方便文档的存档和交流,是现代工程设计中不可或缺的一部分。·CAD三维开发是指使用计算机程序和工具来创建、编辑和操作三维模型、图形和设计的过程。它在工程、建筑、制造和游戏等领域广泛应用。CAD三维开发可能涉及到复杂的图形算法、性能优化、并行计算等方面的内容,因此需要深入学习和实践,以提高开发的效率和质量。

RZer的博客 1652

领域模型架构(DSL)

基于以上配置及解析,后台可以获取到页面实现时需要用到的数据。前端基于提供的接口数据实现对应页面模版,后续的开发不管是功能新增还是页面新增,都可以通过配置去生成页面。DSL 的核心价值在于提升开发效率和代码质量,同时增强开发者与领域专家的沟通能力。通过 DSL,可以将复杂的业务逻辑抽象为简单的声明式语法,从而降低开发和维护成本。虽然DSL高效简洁,但仅适用于特定领域,无法满足通用需求。DSL的设计需要深入理解领域模型,并平衡功能与简洁性。

qq_45737740的博客 659

使用STC15F104W产生PWM脉冲

最近的小项目中使用到了STC15F104W产生PWM脉冲

yeats1989的专栏 1万+

(二)深度解析领域特定语言(DSL)第一章——DSL 定义与特性

《领域特定语言(DSL)的核心特性与应用价值》 摘要:本文系统阐述了领域特定语言(DSL)的技术本质与应用价值。在技术架构日益复杂的背景下,DSL作为"分而治之,专事专干"方法论的具体实践,通过为特定领域提供精简、连贯的语法体系,有效提升了开发效率与系统可维护性。DSL具备五大核心特性:编程语言属性、语言连贯性、有限表达能力、领域特定性以及与通用语言的集成能力。相比通用编程语言,DSL更注重领域语义的直接编码,将复杂逻辑压缩为高度抽象的语句,同时严格限制功能边界以避免复杂性膨胀。典型的D

weixin_46217641的博客 3万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

DSL初探

只要自底向上从左到右遍历树结构(后序遍历),根据节点的树结构类型去执行对应的转换函数,构建我们的执行算法。DSL的主要优势在于其在特定领域内的强大表达能力,可以减少开发者的工作量,提高代码质量。然而,设计和实现一个好的DSL并非易事,需要深入理解领域知识,同时也需要精通语言设计和实现技术。DSL广泛应用于各种领域,如Web开发中的HTML和CSS,数据库查询中的SQL,以及构建系统中的Makefile等。随着编程领域的发展,DSL将会越来越重要,我们也应该学习和掌握DSL,以便能更好地解决特定领域的问题。

qq_42828391的博客 3309

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

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

转自:开发者需要了解的领域特定语言(DSL) - 知乎 领域特定语言是在特定领域下用于特定上下文的语言。作为开发者,很有必要了解领域特定语言的含义,以及为什么要使用特定领域语言。 领域特定语言domain-specific language (DSL)是一种旨在特定领域下的上下文的语言。这里的领域是指某种商业上的(例如银行业、保险业等)上下文,也可以指某种应用程序的(例如 Web 应用、数据库等)上下文。与之相比的另一个概念是 通用语言general-purpose language (GPL,LCTT

sinolover的专栏 4160

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

领域特定语言:为什么它们对业务逻辑的表达是无可替代的

1.背景介绍 领域特定语言(Domain-Specific Language,DSL)是一种针对特定领域或应用场景设计的编程语言。它们通常具有高度专业化,能够更有效地表达和解决相关领域的问题。与通用编程语言(General-Purpose Language,GPL)相比,DSL 更加简洁、易读、易理解,能够提高开发速度和质量。 在现代大数据和人工智能领域,DSL 的应用越来越广泛。例如,在数据...

AI天才研究院 856

DSL 领域特定语言

一、DSL介绍 DSL(Domain Specific Language)是针对某一领域,具有受限表达性的一种计算机程序设计语言。 常用于聚焦指定的领域或问题,这就要求 DSL 具备强大的表现力,同时在使用起来要简单。说到DSL,大家也会自然的想到通用语言(如Java、C等)。 为什么没有一种语言同时 兼具『简洁』和『业务表达』能力呢? 从信息论本质上来讨论这个问题,每个语言的程序都可以抽象为一个字符串,每个字符串由有限数量的合法字符组成,它在运行时会实现某个功能,因而可以看作是一种需求的信源编码。每

Sunny的专栏 3万+

(一)深度解析领域特定语言(DSL)——前言

摘要:本文探讨了作者撰写DSL(领域特定语言)技术文章的初衷与历程。在当前AI热潮下,作者注意到国内DSL系统性资料的稀缺,历时三年完成这一系列文章,旨在填补技术空白。文章对比了马丁·福勒的理论著作,强调本系列更注重实践应用,并以Java语言为基础展开讲解。作者也反思了当前技术界的浮躁现象,呼吁开发者重视基础技术积累,并分享了自身的技术情怀与人生感悟。

weixin_46217641的博客 5万+
上一篇: Mac安装Maven,并添加远程仓库中不存在的jar包
下一篇: 解决git@github.com: Permission denied (publickey).问题
耐利
博客等级 码龄12年 188粉丝 38原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值