原文地址: http://www.moye.me/2015/05/30/dsl-in-action/
最近看了本有意思的书,受到了一些启发,在此记录一下:
即 domain-specific language ,是指和业务域模型相关的语言,粗糙的说法:行(业黑)话。关于什么是DSL, 见仁见智 ,比如我认为SQL是一种DSL,有人却认为不是。
对于“然并卵”一族来说,世界上大多数事情对他们来说都没什么用,DSL也不例外;于我而言,用DSL的一套理论能实现一个查询JSON对象的库,类SQL的语法,几百行就能搞定,使用起来像是这样的:
var result = Query(dataSource, '*.name, *.sex where who.sex=MALE && who.name=CRAP');
dataSource是类似这样的数据源:
var dataSource = { '1': { who: {name: 'CRAP', sex: 'MALE'} }, '2': { who: {name: 'HOLY', sex: 'FEMALE'} }, '3': { who: {name: 'WEIRD', sex: 'FEMALE'} } };
书中提到了LR,我确信自己没有理解这个概念,但是受到了启发,决定用它提到的Bottom-up(自底向上)的方式试试。所以我的DSL大概分两部分:
基于如上思路,我用Javascript实现了这个简单的DSL,它能使用SQL的语法查询JSON对象,希望能为您提供一些方便。
更多文章请移步我的blog新地址: http://www.moye.me/