-
Notifications
You must be signed in to change notification settings - Fork 4
Nisp上手文档
信鑫-King edited this page Mar 15, 2017
·
3 revisions
Nisp
一种跨平台的语言,Nisp
是一种思想,一切皆函数[fun ]
,fun
为Nisp
提供的原子函数或用户自定义的方法,借鉴Lisp
分治和线性思想,nisp
内核只提供一种解析机制和部分原子函数,用户可以自定义方法,来满足自身业务需求,Nisp
给用户无限的想像!
表达式类似于前缀表达式,将fun
方法(如+-/*:|
等)放置参数之前
npm install nisp --save
完成安装
// 引入nisp
var nisp = require("nisp").default;
// 定义加法方法
var sandbox = {
"+": (...args) => args.reduce((a, b) => a + b)
};
// 表达式
var exp = ["+", 1, 2, ["+", 1, 2]];
// 调用nisp方法,传入(表达式,方法)
nisp(exp, sandbox); // => 6
同时,也可以采用ES6
的写法
// 引入nisp
import nisp from 'nisp'
// 定义加法方法
var sandbox = {
'+': (a, b) => a + b
};
// 表达式
var exp = ['+', 1, 2, ['+', 1, 2]];
// 调用nisp方法,传入(表达式,方法)
nisp(exp, sandbox); // => 6
基本表达式:['$', any ]
将原始输入值转成规范的基本数据类型(Number/Boolean/String),调用其它方法时,同时也会在外包一层$
,转成基本数据类型。
var nisp = require("nisp").default;
var $ = require("nisp/lib/$").default;
var sandbox = {
"$": $
};
var exp = ['$', [1, "ok"]];
nisp(exp, sandbox); // => [1,"ok"]
基本语法:[: key value]
,用来输出一个{"key":"value"}
对象,
var nisp = require("nisp").default;
var dict = require("nisp/lib/dict").default;
var sandbox = {
":": dict
};
var exp = [":", 1, 2];
nisp(exp, sandbox); // => {1:2}
基本语法['?',a,b,c]
,相当于if
判断语句中的a ? b : c
,如果a
存在为b
,不存在为b
var nisp = require("nisp").default;
var $if = require("nisp/lib/if").default;
var sandbox = {
"?": $if
};
var exp = ['?', 1 , 'a' , 'b'];
var exp2 = ['?', 0 , 'a' , 'b'];
console.log(nisp(exp, sandbox)); // => a
console.log(nisp(exp2, sandbox)); // => b
基本语法['list',1,2,3]
,将多个值转成数组。
在线测试地址
var nisp = require("nisp").default;
var list = require("nisp/lib/list").default;
var sandbox = {
"|": list
};
var exp = ['|', 1 , 'a' , 'b'];
nisp(exp, sandbox); // => [1,'a','b']