25、EriLex:嵌入式领域特定语言生成器

EriLex:EDSL生成器解析

EriLex:嵌入式领域特定语言生成器

一、引言

领域特定语言(DSL)的研究涉及编程语言的多个方面,如元语言设计、语言规范组合和静态属性保证等。嵌入式领域特定语言(EDSL)的研究则聚焦于复用通用编程语言的基础设施,并以DSL的形式为软件库提供抽象。“嵌入”模式是将DSL构造嵌入现有通用编程语言的一种方式,具有与宿主语言耦合度低的优点,不依赖宿主语言的元语言构造、特定语法形式和可扩展编译器。此外,EDSL代码可直接使用宿主语言编译器编译,无需外部工具或预处理器。

在EDSL的实现中,存在以下几种对比情况:
1. 类型化与非类型化
- 非类型化编码使用抽象数据类型易于实现,但当EDSL有多种类型时会出现问题。例如,运行时类型检查会降低性能,且简单的类型错误只能在运行时发现。
- 类型化嵌入到静态类型宿主语言中可以解决这些问题,能通过宿主语言编译器静态排除类型错误,并为编译器优化代码提供信息。不过,类型化嵌入更为复杂,需要将EDSL术语编码为宿主语言术语。
2. 函数式与面向对象(OO)
- 函数式编程语言中,EDSL术语通常采用嵌套函数或构造函数调用的功能嵌套风格(FNS)进行编码,且具备类型化编码EDSL的能力。
- 非函数式OO编程语言的相关研究较少。方法链风格(MCS)编程是OO编程中的独特理念,在实践中,像jMock和Hibernate Criteria Query等软件库支持MCS编程,将逻辑相关的方法调用组合成紧凑代码,并强制方法的使用规则。例如:

List cats = se
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值