共计 1212 个字符,预计需要花费 4 分钟才能阅读完成。
应用 Java 实现 JS 脚本引擎
我的项目地址
https://github.com/GitHub-Laz…
生成语法树 并输入格式化代码
示例代码
class Test{public static void main(String[] args){Top.init(); | |
DocNode doc = Top.compile("let a=1+2,b=3,c=\"string\",d=a*(b+c/2),func=function(){};"); | |
System.out.println(doc); | |
} | |
} |
输入
let a = 1 + 2, b = 3, c = "string", d = a * (b + c / 2), func = function () {}
运行脚本
以下示例为运行快排算法(运行环境线程隔离)
js 脚本
function sort(arr, i, j) {if (i >= j) {return;} | |
let p = i, q = j; | |
let temp = arr[p]; | |
while (p < q) {while (p < q && arr[q] >= temp) {q-=1;} | |
arr[p] = arr[q]; | |
while (p < q && arr[p] <= temp) {p+=1;} | |
arr[q] = arr[p]; | |
} | |
arr[q] = temp; | |
sort(arr, i, q - 1); | |
sort(arr, q + 1, j); | |
} | |
let arr = [234, 57, 12, 123, 346, 1234, 2]; | |
sort(arr, 0, arr.length - 1); |
示例代码
class Test{public static void main(String[] args){Top.init(); | |
Top.eval("function sort(arr, i, j) {\n" + | |
"if (i >= j) {\n" + | |
"return;\n" + | |
"}\n" + | |
"let p = i, q = j;\n" + | |
"let temp = arr[p];\n" + | |
"while (p < q) {\n" + | |
"while (p < q && arr[q] >= temp) {\n" + | |
"q-=1;\n" + | |
"}\n" + | |
"arr[p] = arr[q];\n" + | |
"while (p < q && arr[p] <= temp) {\n" + | |
"p+=1;\n" + | |
"}\n" + | |
"arr[q] = arr[p];\n" + | |
"}\n" + | |
"arr[q] = temp;\n" + | |
"sort(arr, i, q - 1);\n" + | |
"sort(arr, q + 1, j);\n" + | |
"}\n" + | |
"\n" + | |
"let arr = [234, 57, 12, 123, 346, 1234, 2];\n" + | |
"\n" + | |
"sort(arr, 0, arr.length - 1);"); | |
Top.loop(); | |
System.out.println(Top.getThreadLocalTop().getMainContexts().getContexts().peek().toSimpleString()); | |
} | |
} |
输入
arr: [2, 12, 57, 123, 234, 346, 1234] | |
sort: [object Object] |
正文完