FakeScript-Java

轻量级嵌入式脚本语言
授权协议 MIT
开发语言 Java
所属分类 程序开发、 脚本编程语言
软件类型 开源软件
地区 国产
投 递 者 华恩
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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 轻量级嵌入式脚本语言。 java/blob/master/README_CN.md#%E7%AE%80%E4%BB%8B)简介 FakeScript- Java是一款轻量级的嵌入式脚本语言,使用Java语言编写,语法吸取自lua、golang、erlang,基于jflex、cup生成语法树,编译成字节码解释执行。 C/C++版本fakescript jav

  • 软件介绍 FakeScript-Java 轻量级嵌入式脚本语言。 简介 FakeScript-Java是一款轻量级的嵌入式脚本语言,使用Java语言编写,语法吸取自lua、golang、erlang,基于jflex、cup生成语法树,编译成字节码解释执行。 C/C++版本fakescript 脚本特性语法类似lua 全部为函数 支持array,map,可以无限嵌套 支持fake testfunc(

  • 此文已由作者赵昕授权网易云社区发布。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 fakescript 轻量级嵌入式脚本语言 https://github.com/esrrhs/fakescript-java 简介 fakescript是一款轻量级的嵌入式脚本语言,使用Java语言编写,语法吸取自lua、golang、erlang,基于jflex、cup生成语法树,编译成字节码解释执行。 

 相关资料
  • null 解压缩算法的重要指标是数据的大小加上算法的大小(因为它们将驻留在相同的有限内存中)。 可用于解压的RAM很少;可以将单个字形的数据解压缩到RAM中,但不能更多。 为了使事情变得更加困难,算法必须在32位微控制器(ARM Cortex-M core)上非常快,因为字形在被绘制到显示器上时需要解压缩。每八位元组十个或二十个机器循环是可以的,一百个肯定太多了。 为了使事情变得更容易,完整的数据

  • 主要内容:使用普通函数创建 goroutine,使用匿名函数创建goroutine在编写 Socket 网络程序时,需要提前准备一个线程池为每一个 Socket 的收发包分配一个线程。开发人员需要在线程数量和 CPU 数量间建立一个对应关系,以保证每个任务能及时地被分配到 CPU 上进行处理,同时避免多个任务频繁地在线程间切换执行而损失效率。 虽然,线程池为逻辑编写者提供了线程分配的抽象机制。但是,如果面对随时随地可能发生的并发和线程处理需求,线程池就不是非常直观和方便了。能否

  • 没有标记语言就没有Web和丰富多彩的互联网,但创造了Web的HTML语言并非尽善尽美,存在诸如难读、难写、难以向其他格式转换的问题。究其根源是因为HTML语言是一种“重”标记语言,对机器友好而并非对人友好。 下面这段HTML源码,非技术控阅读起来会遇到困难。 <html> <head> <meta content='application/xhtml+xml;charset=utf-8' ht

  • 目录 1. 回调到php中 2. 错误处理 3. 初始化php 4. 覆写INI_SYSTEM和INI_PERDIR选项 5. 捕获输出 6. 同时扩展和嵌入 7. 小结 php的嵌入式能够提供的可不仅仅是同步的加载和执行脚本. 通过理解php的执行模块 各个部分是怎样组合的, 甚至给出一个脚本还可以回调到你的宿主应用中. 本章将涉及 SAPI层提供的I/O钩子带来的好处, 展开你已经从前面的主题

  • 问题内容: 题 我正在寻找Java内存对象缓存API。有什么建议吗?您过去使用过什么解决方案? 当前 现在,我只是在使用地图: 要求 我需要扩展缓存以包括以下基本功能: 最大尺寸 生存时间 但是,我不需要更复杂的功能,例如: 来自多个进程的访问(缓存服务器) 持久性(到磁盘) 意见建议 内存中缓存: Guava CacheBuilder-活动开发。请参阅此演示文稿。 LRUMap-通过API配置。

  • 问题内容: 在我创建的许多Python应用程序中,我经常创建简单的模块,除了常量之外,这些模块仅用作配置文件。此外,由于配置文件实际上是Python代码文件,因此我可以添加简单的逻辑以根据调试级别等来更改变量。 尽管这对于内部应用程序非常有效,但我担心在将这些应用程序发布到野外时会感到担心,因为担心有人会意外地或恶意地向文件中添加破坏性代码。使用Python作为嵌入式脚本语言也是如此。 是否存在被