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

如何轻松构建DSL(二)

 
阅读更多

    既然说DSL就如同文字对于人类一样重要,让你的软件能够有自己的DSL绝对是一件很酷的事情,但是在很长一段时间里,开发一个DSL系统不是一个简单的事情,大家的编译原理课程,很多都是过了就过了,而且能够设计和实现一套DSL无疑是让人觉得这觉得是个高级软件工程师才能干的活。

    既然我们要实现这个DSL,那就先来看它是个什么样子,有什么特征。不如这样子看,看输入和输出,先不管中间过程是怎样,大部分DSL都是脚本语言,就是语句直接执行,而不是像编译语言如JAVA,C++那样输出一个可执行程序,所以且先只管脚本语言的情况,那脚本语言的特征是怎样呢,输入是脚本,可能的形式是一行指令也可能是多行指令,反正,都是字符串。对,字符串,然后输出呢,输出就很多种多样了,可能是数值,可能是对系统里数据的更改而不是直接的输出。总而言之,就是对这个软件里的数据产生了影响。

    既然有输入和输出,那中间的黑盒子是怎样呢,它做了什么事情呢?简而言之,字符串首先被解析,成为了AST(abstract synext tree),这样呢,就把无结构的数据,变成了有结构的数据,讲原先只能算长度,连接截取的字符串数据变成了,有上下关系,能单独处理的数据节点树,这个树上的节点,可能是数字,可能是字符串,可能是业务数据对象,总之,成为了可以计算的对象,然后,就可以对数据进行计算了,这是神奇发生的地方,至于怎么计算,就看你的语言怎么设计和业务的需求是怎样了。

分享到:
评论

相关推荐

    Groovy DSL

    通过深入学习本书,读者不仅能够掌握使用Groovy构建DSL的基本原理和技术细节,还能了解到如何在实践中有效地运用这些知识来提高软件开发的效率和质量。 总之,Groovy作为一种强大的脚本语言,不仅具备与Java无缝...

    groovy 一个不错的文档 实现dsl

    - **配置文件**: 使用Groovy作为配置语言,如Gradle构建脚本中的Groovy DSL。 - **测试框架**: 如Spock框架使用Groovy实现的BDD风格的测试DSL。 - **应用开发**: Groovy可以用来创建内部DSL,用于简化复杂系统的开发...

    Ruby-Jbuilder通过一个构建式DSL创建JSON结构

    通过这种方式,你可以轻松地构建出多层嵌套的JSON结构。 此外,Jbuilder还允许条件语句和循环,这使得动态生成JSON成为可能。例如,你可以检查用户是否已验证邮件,然后根据结果添加一个键: ```ruby json....

    RVcompose,可扩展kotlin dsl,用于使用recyclerview构建动态可重用ui组件.zip

    而`RVcompose`则是一个专为RecyclerView设计的开源项目,利用Kotlin的Domain Specific Language(DSL)来简化UI组件的构建过程,使其更加灵活和可扩展。下面将详细介绍`RVcompose`的核心概念、使用方法以及其带来的...

    xtext eclipse DSL

    Xtext还支持将现有的Ecore模型导入到DSL中,这样可以在已有的基础上构建新的DSL。 #### 九、语法混合(Grammar Mixins) 语法混合允许在不同的语法文件中复用相同的规则定义,这对于创建大型语言来说非常有用。 #...

    用于轻松测试REST服务的Java DSL.zip

    标题中的“用于轻松测试REST服务的Java DSL”指的是使用Java Domain Specific Language(DSL)来简化RESTful服务的测试过程。REST服务是Web应用程序常见的接口类型,用于交换数据。DSL是一种特定于领域的编程语言,...

    Ruby-Skeptick一个通用的DSL用于构建和运行ImageMagick命令

    例如,你可以轻松地实现图片的缩放、裁剪、旋转、添加边框等操作,甚至可以进行更高级的特效处理,如颜色转换、模糊、锐化等。 在使用Skeptick时,首先需要安装ImageMagick库,然后在Ruby项目中引入Skeptick gem。...

    Simple-DSL:用Java编写简单的DSL的实用程序

    DSL的其余部分在很大程度上取决于被测系统,但是提供了许多模式,这些模式已被证明可以成功地构建经得起时间考验的DSL。 例子 一个简单的在交易所下订单的测试用例可能看起来像: package ...

    Python-Meson是一个跨平台的构建系统

    其简洁的DSL、高效的构建机制以及良好的生态系统支持,使得Meson成为现代软件工程中的一个优选构建解决方案。无论你是个人开发者还是大型团队,Meson都能帮助你更专注于代码本身,而不是构建流程。如果你正在寻找一...

    gradle构建工具下载

    同时,6.1.1版本还改进了Gradle插件的发布流程,使得开发者可以更轻松地发布自己的Gradle插件。 Gradle 6.5.1作为6.5系列的一个维护版本,修复了6.5版本中的一些已知问题,提高了整体的稳定性和兼容性。这个版本...

    android-gradle-dsl:针对Gradle的Android插件的DSL参考

    在Android开发中,DSL使得开发者能够轻松地定义应用的依赖、构建变体、资源处理等任务。 在Android Studio中,`build.gradle`文件就是使用Android-Gradle-DSL的地方。例如,我们可以在其中声明项目依赖: ```...

    data2viz,一个具有全面dsl的多平台数据可视化库.zip

    7. **集成友好**:data2viz可以轻松地与现有的Kotlin项目集成,无论你是构建Web应用、桌面应用还是移动应用,都可以快速地引入这个库来提升数据可视化的质量。 总的来说,data2viz是一个强大的工具,它为开发者提供...

    scala-swt-builder:Scala SWT 构建器 DSL

    Scala SWT 构建器 DSL 该项目试图为 SWT GUI 创建 DSL。 版本 该项目正在开发中(尚未准备好使用)。 它目前支持创建大多数 SWT 小部件。 我也想加入事件处理(目前只实现了onSelect )。 安装(SBT 0.13.6+) 在 ...

    DSL Engine-开源

    DSL Engine开源项目为开发者提供了一个平台,让他们可以更轻松地构建这样的自定义语言,提高代码的可读性、可维护性和效率。 元编程(Metaprogramming)是程序设计的一种高级技术,它是指在运行时或编译时能够处理...

    基于gradle构建的项目

    - **基于Groovy的DSL**:Gradle的构建脚本使用Groovy语言编写,使得脚本更加简洁易读,且具有动态语言的灵活性。 - **面向任务的构建**:Gradle的核心是任务,每个任务负责完成特定的工作,如编译、打包等。任务...

    Gradle构建(war) web项目示例

    Gradle基于Groovy语言,采用领域特定语言(DSL)进行构建脚本编写,使得配置更加简洁易读。Gradle的任务(Task)是构建过程中的最小执行单元,它们可以被组织成任务链,形成构建生命周期。 在构建一个web项目时,...

    gradle 构建工具.zip

    4. **自定义构建逻辑**:通过Groovy或Kotlin DSL,开发者可以轻松编写自定义的构建逻辑,实现高度定制化。 5. **并行构建**:Gradle支持并行构建任务,充分利用多核处理器,提高构建速度。 ### 使用指南 使用...

    Java项目构建新型利器——Gradle

    Gradle的构建文件通常是Groovy脚本,这些脚本以声明式的方式描述构建过程,通过使用DSL来定义各种构建任务和依赖。Gradle支持多种编程语言和测试策略,它能够轻松地处理多种编程语言编写的项目,以及支持多种测试...

    构建自己的Java库

    例如,通过Maven的`pom.xml`配置文件,我们可以声明库的依赖、版本信息、插件等,而Gradle则使用Groovy或Kotlin DSL进行配置。 2. **版本控制**:使用Git进行版本控制是必不可少的,它可以帮助你跟踪代码变更,方便...

    使用Jenkins Pipeline插件和Docker打造容器化构建环境.docx

    1. Jenkins Pipeline 插件:Jenkins Pipeline 插件是一种强大的插件,可以让开发者使用 DSL 语言描述构建过程。通过使用 Pipeline 语法,可以轻松地定义各个阶段的构建过程,例如 Checkout、Build 等阶段。 2. ...

Global site tag (gtag.js) - Google Analytics