`
lazing
  • 浏览: 23931 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

DSL之三 DSL实现

    博客分类:
  • MDA
阅读更多

 

笔记:DSL笔记之三 DSL实现

Written by 某L. Posted in Domain Specific LanguageMDA

ClipboardImage1.png

一般来说,DSL的实现包含三种方式:内部DSL,外部DSL,DSL工作台

内部DSL是指DSL使用宿主语言实现,需要遵循宿主语言的语法;

外度DSL通常拥有独立的语法,通过编译或解释形成目标模型;

DSL工作台通常表现为一个支持DSL开发的IDE。

 

DSL一般先解析为语义模型(Semantic Model),有时还会进一步生成目标代码(target code)。

ClipboardImage

在解析为语义模型的过程中,一般隐含着一个概念——语法树(Syntax Tree)

ClipboardImage(1)

在内部DSL中,语法树的实现是以函数参数调用(嵌套函数 Nested Function)及嵌套对象(方法链)的形式。有时语言并没有强制的层次结构,那么就需要借助函数序列(Function Sequence)和上下文变量(Context Variables)来模拟层次结构。

语法(grammar)是用于描述文本流如何转换为语法树的规则集。

语法树和语义模型的不同之处在于:同样的语法树可能有不同的语义模型,反义亦然。

 

在解析生成语法树的过程中,解析器可能需要存储一些数据。为解决这个问题,引入了符号表(Symbol Table)

image

本质上来讲,符号表是一个字典,键为标识符,值为语法树中对应的对象。

DSL的测试可以分为三部分,对语义模型的测试,对解析器的测试,以及对DSL脚本测试。

分享到:
评论

相关推荐

    groovy 一个不错的文档 实现dsl

    Groovy因其灵活性和表达力而成为实现DSL的理想选择之一。 ##### 领域特定语言(DSL)定义 DSL是一种专注于解决特定问题领域的编程语言或可执行规范语言。与通用目的语言(General Purpose Language, GPL)相比,DSL通过...

    DSL论坛-DSL介绍

    #### 三、DSL市场现状 - DSL是全球第一大宽带接入方式,占据超过65%的市场份额。 - ADSL仍然是主流技术,但VDSL和ADSL2+正在逐渐普及。 - DSL技术能够支持高达100Mbps的数据传输速率,并且支持语音、视频和数据等...

    LSM6DSL应用手册

    本文手册主要提供了关于LSM6DSL的使用信息和应用提示,深入讲解了如何进行数据读取、配置唤醒模式、实现计步功能等。 首先,LSM6DSL通过其I2C/SPI串行接口标准输出数据,能够执行在高性能模式下以0.65mA的低功耗。...

    用Groovy实现DSL领域定义语言

    在groovy中实现DSL领域特定语言的技术。 版权声明: 本系列文章是从原著《Groovy For Domain-Specific Languages》(原作者: Fergal Dearle)中翻译而来,从中加入了一些本人自己的读书笔记和理解。本系列文章不为...

    DSL测试方案.

    整体来看,DSL测试方案的知识点涉及到了宽带DSL接入的运营维护难点,并详细讲解了自动测试方案的实现原理和技术细节,特别是在故障快速定位和线路质量测试方面的关键技术突破。这些知识点对于通信行业的运维人员来说...

    elasticSearch查询语句DSL

    同时,我们还将介绍布尔查询、should查询和must_not查询等与逻辑关系相关的查询语句,帮助您更好地理解DSL的灵活性和强大之处。此外,我们还将深入讨论聚合操作在DSL中的应用。通过使用聚合查询,您可以对检索结果...

    lsm6dsl_官方驱动+中英文文档.7z

    LSM6DSL是意法半导体...总之,“lsm6dsl_官方驱动+中英文文档.7z”这个压缩包为开发者提供了一站式的LSM6DSL传感器开发资源,无论是初学者还是经验丰富的工程师,都能从中获益,快速实现基于LSM6DSL的创新应用。

    dsl.rar_dsl

    3. **DSL实现**:用VHDL编写DSL的解析器和编译器,将DSL代码转化为VHDL代码。 4. **验证**:通过仿真和硬件测试验证DSL的正确性和效率。 5. **应用**:使用DSL编写硬件设计,提高开发速度和代码可读性。 在实际工程...

    packet tracer dsl modeml连接实验

    读者可以自行实现实验拓展。 五、知识点总结 Packet Tracer DSL.Modem 连接实验知识点总结: * 使用 Packet Tracer 软件模拟远程拨号通信 * 配置 DSL.Modem 和云图连接网络 * 设置 PC 的 IP 地址 * 云图配置,...

    西门子840Dsl基本软件和操作软件

    西门子840Dsl是西门子推出的数控系统系列之一,广泛应用于机床和加工中心。它以功能强大、操作方便、高度集成而著称,特别是其数控系统操作方法在数控技术领域具有很高的影响力。为了便于用户更好地了解和使用西门子...

    lsm6dsl源码

    STM32F4系列微控制器是基于ARM Cortex-M4内核的高性能MCU,常用于工业控制、自动化、智能硬件等领域,与LSM6DSL配合可以实现高精度的运动跟踪和姿态测量。 在"STM32f4的LSM6DSL程序"中,我们通常会看到以下关键知识...

    西门子840DSL配置豪华手轮

    这种配置使得HHU能够实时获取和修改840DSL的控制参数,实现远程监控和控制,极大地提升了数控系统的灵活性和实用性。在实际应用中,根据机床的特定需求,可能还需要对HHU的功能进行定制编程,以实现更复杂的交互功能...

    840dsl toolbox_step7_5.5

    840dsl Toolbox针对SINUMERIK 840Dsl系统,是Step7的强大补充,它包含了一系列专用工具,如NC(数值控制)编程、PLC编程、HMI(人机界面)设计等,用于实现机床控制、工艺逻辑和数据管理等功能。840dsl Toolbox使得...

    Mybatis的Mapper方式整合elasticsearch的DSL调用,基于接口和代理生成bean注入的方式进行调用

    本篇文章将详细介绍如何将Mybatis的Mapper方式与Elasticsearch的DSL(Domain Specific Language)查询相结合,以及如何通过CGlib实现动态代理来优化这一过程。 首先,让我们理解什么是Mybatis的Mapper方式。Mybatis...

    西门子840Dsl利用PC备份PCU50的数据

    它通过网络与840Dsl进行通信,实现数据的实时交换。 #### 知识点三:通过PC备份PCU50数据的方法 为了确保生产过程中的数据安全,经常需要对重要的系统数据进行备份。对于西门子840Dsl系统与PCU50来说,通过PC进行...

    用XText工具开发的自定义DSL语言

    在本案例中,我们用XText创建了一个自定义的DSL语言,目的是实现一个简单的表达式解释器。 DSL的开发首先需要定义其语法规则。XText通过Ecore模型来定义这些规则,这是一种元模型,用于描述数据结构和关系。Ecore...

    bupt期末DSL设计:一种领域特定脚本语言的解释器的设计与实现(java版本,代码加报告加用户说明)

    在这个项目中,我们聚焦于一个使用Java实现的DSL解释器的设计与实现,这是一份面向北京邮电大学(BUPU)学生的期末课程设计。 首先,我们要理解DSL的概念。DSL可以分为内部DSL和外部DSL。内部DSL通常嵌入到一个更大...

    ubuntu10.04 DSL 上网攻略 pdf

    本文将详细介绍如何在Ubuntu 10.04系统中配置DSL(数字用户线路)以实现稳定上网的方法。 #### 准备工作 在开始配置之前,请确保您已经安装好了Ubuntu 10.04系统,并且拥有了DSL服务提供商提供的用户名和密码等必要...

    Groovy DSL 动态规则(rule)执行引擎流程引擎特色风控系统规则引擎动态接口配置(低代码)

    自创Groovy DSL 动态规则(rule)执行引擎, 流程引擎. 特色 风控系统, 规则引擎, 动态接口配置(低代码)Groovy DSL 动态规则(rule)执行引擎。DSL(特定领域语言): 开发 和 业务 共识的语言。方便业务表达需求, 方便开发...

    840Dsl_S120_参数手册

    S120是西门子提供的驱动器系列,与840Dsl配合使用,可以实现对机床运动的精确控制。 文件描述中提到“超清晰版,需要的人可以下载看看”,说明该手册可能是一个高分辨率版本的电子文档,可以通过网络下载获得。手册...

Global site tag (gtag.js) - Google Analytics