tinyscript 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
tinyscript 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
tinyscript 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
tinyscript 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
tinyscript 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 GPL
开发语言 Java
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
提 交 者 悠悠然然
适用人群 未知
收录时间 2017-09-01

软件简介

许多的人使用Java来作为主要的编程语言,许多的时候感觉代码太过繁复,当然有Scala、Kotlin、Python等等语言号称可以解决此问题,但是毕竟生态圈的切换不是个小问题。同时语法结构和Java相去甚远也导致切换的成本毕竟高。

为此本人做了一下尝试,准备走一个中间路线,主题还是用Java语言,但是在需要的时候用TinyScript来解决一下问题,然后再回到Java主体执行,所以你完全可以把它当成一种EL语言来使用,当然解决复杂问题也比常规的EL语言更方便,毕竟TinyScript在集合运算能力方面有重点扩展的地方。

未来的方向,会重点放在算法方面,目前已经内嵌了动态规划的背包问题通用方法,后面会逐步扩充其他算法,让程序员们不再纠结于算法实现,而是集中注意力在问题上。

语言特性列表

  • 支持有序数据结构:数组和序列

  • 支持无序数据结构:set和map

  • 支持专有数据结构:树和序表

  • 序表支持关联、匹配、过滤、分组、排序、聚会等多种业务运算

  • 与java无缝集成,适用于jdk1.6及以上版本

  • 支持new java对象,并可以使用Java所有类及对象

  • 可以采用obj.field方式访问和操作对象属性,简化obj.getField()和obj.setField(value);

  • 支持数据结构间相互转换

  • 支持调用java非静态方法和静态方法

  • 支持bean对象,可以操作bean对象的属性和方法

  • 可以和Spring集成,方便加载bean配置信息

  • 支持访问数据库,可以将表数据转换成序表结构

  • 支持访问Excel,可以将Sheet数据转换成序表结构

  • 支持访问文本,可以将行数据转换成序表结构

  • 支持不同数据源的序表操作,比如关联、匹配等

  • 支持object[key]扩展,比如访问list[1],map[key],简化用户操作

  • 支持object.field扩展,允许用户实现不同语法场景

  • 支持object.function(…)扩展,允许用户实现不同语法场景

  • 支持java的基本类型,内置不同精度的数值转换函数

  • 支持if/elseif/else、switch指令

  • 支持for、while循环指令

  • 支持基本表达式操作,符合java语法规范

  • 允许用户设置下标是否从0开始,方便用户访问元素

  • 支持[a .. b]方式生成指定范围的序列

  • 允许用户定制常量,可以在脚本引擎构造后直接使用,无需声明,如PI、E等。

  • 内置聚合函数和三角函数等系统函数,允许用户自行编写函数类进行扩展。

  • 允许用户编写脚本类,简化业务逻辑。

  • 允许用户编写脚本文件,同时支持java方式和IDE插件调用,实现即时开发测试。

  • 支持动态更新脚本文件,无需重新编译部署

  • 允许用户通过快速运行器执行脚本,也允许用户通过带Spring的运行器执行需要Spring环境的脚本

  • 定义了基本操作符,但是允许用户配置不同的对象实现重载。

  • 提供集合的差并交异或运算

  • 允许对集合子元素进行批量操作符运算,返回新的集合,如list*2

  • 允许对集合子元素进行批量方法运算,返回新的集合,如list.getName()

  • 允许对集合子元素进行批量属性运算,返回新的集合,如list.age

  • 支持lambda表达式,部分函数允许使用lambda表达式简化逻辑

  • 增强lambda特性,允许lambda变量修改外部同名变量。

  • 支持排列的lambda遍历操作

  • 支持组合的lambda遍历操作

  • 支持全排列的lambda遍历操作

  • 支持单方法接口的lambda封装,如Runnable、Comparator

  • 支持各种脚本内嵌执行,比如dataSource[[ sql语言 ]] 进行带@占位符的sql动态执行,支持template[[ 模板语言 ]] 进行模板语言执行,也可以继承各种其他脚本

当然上面列的不一定全,后面也会有新的语言特性加入。

脚本运行

脚本语言的扩展名是ts和tinyscript,当然也可以起其他的扩展名。

提供了Eclipse和Idea的执行器插件,安装之后可以右键直接运行脚本文件。

先推出看看反响如何,如果反响比较好,准备开发ide,支持高亮、调试等等。

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (1)

加载中
mark
2017/09/01 10:42
回复
举报
更多评论
发表了资讯
2017/11/21 16:35

tinyscript 1.2.0 发布了,注重集合类处理的脚本语言

tinyscript 1.2.0 发布了,tinyscript 一个注重提升集合类处理操作的脚本语言。 新增功能: [新增] 增加序表insert函数,支持lambda语法,允许数据来自别的序表 [新增] 增加序表和json互转函数:toJson和jsonToDataSet [新增] 增加序表和xml互转函数:toXml和xmlToDataSet [新增] 增加一系列日期加强函数:dateAdd、dateName、datePart、dateTrunc、day、makeDate、makeDateTime、month和year [新增] 增加当前日期函数:now和tod...

14
4
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2016/03/29 13:39

如何用 ANTLR 4 实现自己的脚本语言?

**ANTLR 是一个 Java 实现的词法/语法分析生成程序,目前最新版本为 4.5.2,支持 Java,C#,JavaScript 等语言,这里我们用 ANTLR 4.5.2 来实现一个自己的脚本语言。** 因为某些未知原因,ANTLR 官方的文档似乎有些地方和 4.5.2 版的实际情况不太吻合,所以,有些部分,我们必须多方查找和自己实践得到,所幸 ANTLR 的文档比较丰富,其在 Github 上例子程序也很多,足够我们探索的了。 如果你没有编译原理的基础,只要写过正则表...

0
2
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
1 评论
20 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部