授权协议 MIT
开发语言 Java
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
投 递 者 SHFUITCK
适用人群 未知
收录时间 2016-08-05

软件简介

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);
展开阅读全文

代码

评论 (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
回复
举报
更多评论
暂无内容
发表了博客
2018/06/20 15:53

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

如何在命令行模式下运行带包的java文件 https://blog.csdn.net/lytor/article/details/17048361 javac,使用"-d ."与省略-d的区别 https://blog.csdn.net/ppxxyy1110/article/details/20971271 1.类文件带包(pakage) //文件名:test.java package org.test; public class test{ public static void main(String[] args){ System.out.println("hello world"); } } 一: 编译命令: javac -d . test.java 生成: 执行:java org/te...

0
2
发表了博客
2018/12/15 17:56

java JDBC

JDBC(Java DataBase Connectivity, java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。 有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向...

0
1
发表于开发技能专区
2020/02/18 15:01

Java ThreadLocal

点击上方"码之初"关注,···选择"设为星标" 与Java精品技术文章不期而遇 Java ThreadLocal类允许创建只能由同一线程读写的变量。因此,即使两个线程正在执行相同的代码,并且该代码具有对相同ThreadLocal变量的引用,两个线程也无法看到彼此的ThreadLocal变量。因此,Java ThreadLocal类提供了一种使代码线程安全的简单方法。 创建ThreadLocal 你可以像创建其他Java对象一样,通过new运算符创建ThreadLocal实例。代码如下: ...

0
1
发表了博客
2018/01/23 11:41

Java ThreadLocal

Java的ThreadLocal变量用来创建线程本地变量。我们知道,一个对象上的所有线程,都会共享该对象的变量,所以这些共享的变量不是线程安全的。我们可以使用synchronization同步语法来使得线程安全,但如果想避免使用synchronization,那么可以使用线程本地变量(ThreadLocal variables)。 使用了ThreadLocal变量后,每个线程都有它自己的本地变量,可以通过get()、set()方法来获得或设置这些变量的值。ThreadLocal实例通常是类中...

0
1
2014/04/09 14:41

Java JVM

一、Java JVM内存介绍 JVM管理两种类型的内存,堆和非堆。按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如...

0
12
发表了博客
2018/02/06 17:15

Java ThreadLocal

source from http://tutorials.jenkov.com/java-concurrency/threadlocal.html#inheritableThreadLocal Java ThreadLocal Creating a ThreadLocal Accessing a ThreadLocal Generic ThreadLocal Initial ThreadLocal Value Full ThreadLocal Example InheritableThreadLocal The ThreadLocal class in Java enables you to create variables that can only be read and written by the same thread. Thus, even if two threads ...

0
0
发表了博客
2019/08/07 10:34

java ThreadLocal

每次看到这玩意熟悉,就是想不起来什么东西,看了才知道是啥玩意,就写个笔记强化一下记忆。 private ThreadLocal threadLocal = new ThreadLocal(); threadLocal.set(0); (int) threadLocal.get(); 上面三行代码分别是定义、赋值和取值。 介绍: 我们只需要实例化对象一次,并且也不需要知道它是被哪个线程实例化。虽然所有的线程都能访问到这个ThreadLocal实例,但是每个线程却只能访问到自己通过调用ThreadLocal的set()方法设...

0
5
发表了博客
2018/10/11 14:17

java_jdbc

jdbc:数据库连接,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。    JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,   功能:建立数据库连接;发送操作数据库的语句;处理结果   举例:     Connection con = DriverManager.getConnection("jdbc:odbc:wombat","login","password");     State...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了问答
2016/08/06 22:06

感觉很不错,只是有IDE不?

感觉很不错,只是有IDE不?

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