FakeScript-Java 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
FakeScript-Java 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
授权协议: MIT
开发语言: Java
操作系统: 跨平台
收录时间: 2016-08-05
提 交 者: shitfuck

FakeScript-Java

轻量级嵌入式脚本语言。

简介

FakeScript-Java是一款轻量级的嵌入式脚本语言,使用Java语言编写,语法吸取自lua、golang、erlang,基于jflex、cup生成语法树,编译成字节码解释执行。 C/C++版本fakescript

脚本特性

  • 语法类似lua

  • 全部为函数

  • 支持array,map,可以无限嵌套

  • 支持fake testfunc(param1)产生routine,实现假多线程效果

  • 支持Java静态函数和Java类成员函数的绑定

  • 自带解释器

  • 支持多返回值

  • 自带profile,可获取脚本各个函数运行时间

  • 支持热更新

  • 支持Int64

  • 支持const定义

  • 支持包

  • 支持struct

示例

#!lua
-- 当前包名
package mypackage.test
-- 引入的文件
include "common.fk"
-- 结构体定义
struct teststruct
    sample_a
    sample_b
    sample_c
end
-- 常量值
const hellostring = "hello"
const helloint = 1234
const hellomap = {1 : "a" 2 : "b" 3 : [1 2 3]}
-- func1 comment
func myfunc1(arg1, arg2)
    -- Java静态函数和类成员函数的调用
    arg3 := cfunc1(helloint) + arg2:memfunc1(arg1)
    -- 分支
    if arg1 < arg2 then 
        -- 创建一个协程
        fake myfunc2(arg1, arg2)
    elseif arg1 == arg2 then    
        print("elseif")
    else
        print("else")
    end
    -- for循环
    for var i = 0, i < arg2, i++ then
        print("i = ", i)
    end
    -- 数组
    var a = array()
    a[1] = 3
    -- 集合
    var b = map()
    b[a] = 1
    b[1] = a
    -- Int64
    var uid = 1241515236123614u
    log("uid = ", uid)
    -- 子函数调用
    var ret1, var ret2 = myfunc2()
    -- 其他包的函数调用
    ret1 = otherpackage.test.myfunc1(arg1, arg2)
    -- 结构体
    var tt = teststruct()
    tt->sample_a = 1
    tt->sample_b = teststruct()
    tt->sample_b->sample_a = 10
    -- 分支
    switch arg1
        case 1 then
            print("1")
        case "a" then
            print("a")
        default
            print("default")
    end
    -- 多返回值
    return arg1, arg3
end

Java示例

#!java
// 创建一个实例
fake f = fk.newfake(null);
// 注册包里全部标记@fakescript的函数
fk.reg(f, "com.test");
// 解析fake脚本文件
fk.parse(f, "test.fk");
// 执行myfunc1函数,传入两个参数分别为1和2
double ret = (double)fk.run(f, "myfunc1", 1, 2);
展开阅读全文

代码

FakeScript-Java 的相关资讯

还没有任何资讯

FakeScript-Java 的相关博客

java -d . **.java 与 java **.java 的区别

如何在命令行模式下运行带包的java文件 https://blog.csdn.net/lytor/article/details/17048361 javac,使用"-d ."与省略-d的...

java JDBC

JDBC(Java DataBase Connectivity, java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,...

Java ThreadLocal

Java的ThreadLocal变量用来创建线程本地变量。我们知道,一个对象上的所有线程,都会共享该对象的变量,所以这些共享的变量不...

Java的ThreadLocal

简介 ThreadLocal是一个本地线程副本变量工具类。主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互...

java 之ThreadLocal

java 之ThreadLocal

java_jdbc

jdbc:数据库连接,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组...

Java JVM

Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚拟机。Tomcat的内存溢出本质就是JVM内存溢...

Java_JDBC

JDBC-ODBC桥连接形式:利用微软提供的ODBC进行数据库链接,然后利用JDBC访问ODBC的函数库,实现数据操作 流程:程序>JDBC>ODB...

java ThreadLocal

每次看到这玩意熟悉,就是想不起来什么东西,看了才知道是啥玩意,就写个笔记强化一下记忆。 private ThreadLocal threadLoca...

FakeScript-Java 的相关问答

1
回答

评论 (8)

加载中
建议换个名字 这个名字太难听了
2019/08/08 18:51
回复
举报
看得懂代码,但是不明白什么意思
2017/06/01 17:00
回复
举报
轻量级嵌入式脚本语言 #FakeScript-Java#
2016/08/05 18:30
回复
举报
2016/08/06 09:50
回复
举报
这语言真是越来越多了 #FakeScript-Java#
2016/08/06 12:33
回复
举报
2016/08/06 19:45
回复
举报
哈哈, #FakeScript-Java#
2016/08/06 23:08
回复
举报
直觉上觉得这玩意有利于生产力 #FakeScript-Java#
2016/08/06 23:18
回复
举报
更多评论
8 评论
50 收藏
分享
返回顶部
顶部