扩展Nashorn-ecma引擎以添加新的运算符和类型
Extending Nashorn ecma engine to add new operators and types
我们公司以前的一位开发人员已经实现了他们自己的javascript引擎,我们想用Nashorn来取代它。
他已经实现了ECMA标准的一个子集,所以理论上这应该是一个相当直接的操作,只是他稍微扩展了语言!
最好用他的语言可以支持的语法示例来解释。
var today = now(); //create a proprietary object that represents time
var tomorrow = today + 1d; //Add a day. NOTE 1h is NOT a constant
可以看出他有
- 将运算符重载添加到他自己的Time类中
- 引入了一种新的表示持续时间的数字"类型"。这种类型可以用1d、3d4h5s、1h、5m等模式实例化。代码知道如何为时间加/减这些数字
等效的javascript代码是
var today = now(); //create a proprietary object that represents time
var tomorrow = today.plus( new Duration( '1d')); //Add a day.
我想知道Nashorn是否有任何"钩子",这样我们就可以用这些"特性"扩展语言,还是需要重写所有的脚本?
感谢
Richard
相关文章:
- 扩展Nashorn-ecma引擎以添加新的运算符和类型
- JavaScript中动态类型运算符的双重调度
- Symfony2 JSON 对象 - 错误未捕获类型错误:无法使用“in”运算符搜索“636”
- 为什么在使用类型运算符时要进行类型检查(===)
- JavaScript 中具有不同类型和值的运算符
- 类型运算符和实例运算符为同一 var 返回不同的信息
- 获取未捕获的类型错误:无法使用“in”运算符搜索“length”in
- 类型错误:无法使用“in”运算符在 [{}] 中搜索“_id”
- 角度类型提前异步结果 - 收到错误“类型错误:无法使用'in'运算符搜索 ..在..".
- 如果我在字符串上使用两个否定运算符,我是否使用类型强制
- 未捕获的类型错误:无法使用“in”运算符在 false 中搜索“长度”
- 是新的,这个,删除,类型是javascript运算符
- JavaScipt的数据类型转换对于“==”运算符究竟是如何工作的
- 如何解决“;未捕获的类型错误:无法构造'评论':请使用'新'运算符"关于Rea
- 类型错误:'未定义'在使用mongoDB排序运算符时不是函数
- Javascript'在'循环内部的运算符返回类型错误
- 带三元运算符语法的Float32Array类型
- 未捕获的类型错误:无法构造'文件':请使用'新'运算符,此DOM对象构造函数不能作为函数
- JavaScript关系比较运算符如何强制类型
- 由于XOR位^运算符,Java中的JavaScript表达式的返回值类型不正确