# magic-script
## 介绍
`magic-script`是一款基于JVM的脚本语言,目前主要是为`magic-api`项目设计。
## 应用案例
- [magic-api,接口快速开发框架,通过Web页面配置,自动映射为HTTP接口](https://gitee.com/ssssssss-team/magic-api)
- [spider-flow,新一代爬虫平台,以图形化方式定义爬虫流程,不写代码即可完成爬虫](https://gitee.com/ssssssss-team/spider-flow)
## 脚本语法
### 关键字
<table>
<thead>
<tr>
<th>关键字</th>
<th>含义</th>
</tr>
</thead>
<tbody>
<tr>
<td>var</td>
<td>定义变量</td>
</tr>
<tr>
<td>if</td>
<td>用在条件语句中,表明当条件不成立时的分支</td>
</tr>
<tr>
<td>for</td>
<td>循环语句</td>
</tr>
<tr>
<td>in</td>
<td>与 for 配合使用</td>
</tr>
<tr>
<td>continue</td>
<td>执行下一次循环</td>
</tr>
<tr>
<td>break</td>
<td>跳出循环</td>
</tr>
<tr>
<td>return</td>
<td>终止当前过程的执行并正常退出到上一个执行过程中</td>
</tr>
<tr>
<td>exit</td>
<td>终止当前脚本,并退出返回,如<code>exit 200,'执行成功',[1,2,3];</code>(v0.5.0中新增)</td>
</tr>
<tr>
<td>try</td>
<td>用于捕获可能发生异常的代码块</td>
</tr>
<tr>
<td>catch</td>
<td>与 try 关键字配合使用,当发生异常时执行</td>
</tr>
<tr>
<td>finally</td>
<td>与 try 关键字配合使用,finally 块无论发生异常都会执行</td>
</tr>
<tr>
<td>import</td>
<td>导入 Java 类或导入已定义好的模块</td>
</tr>
<tr>
<td>as</td>
<td>与 import 关键字配合使用,用作将导入的 Java类或模块 命名为一个本地变量名</td>
</tr>
<tr>
<td>new</td>
<td>创建对象</td>
</tr>
<tr>
<td>true</td>
<td>基础类型之一,表示 Boolean 的:真值</td>
</tr>
<tr>
<td>false</td>
<td>基础类型之一,表示 Boolean 的:假值</td>
</tr>
<tr>
<td>null</td>
<td>基础类型之一,表示 NULL 值</td>
</tr>
<tr>
<td>async</td>
<td>异步调用</td>
</tr>
</tbody>
</table>
### 运算符
<table>
<thead>
<tr>
<th colspan="2">数学运算</th>
<th colspan="2">比较运算</th>
<th colspan="2">逻辑运算</th>
</tr>
</thead>
<tbody>
<tr>
<td>+</td>
<td>加法</td>
<td><</td>
<td>小于</td>
<td>&&</td>
<td>并且</td>
</tr>
<tr>
<td>-</td>
<td>减法</td>
<td><=</td>
<td>小于等于</td>
<td>||</td>
<td>或者</td>
</tr>
<tr>
<td>*</td>
<td>乘法</td>
<td>></td>
<td>大于</td>
<td></td>
<td></td>
</tr>
<tr>
<td>/</td>
<td>除法</td>
<td>>=</td>
<td>大于等于</td>
<td></td>
<td></td>
</tr>
<tr>
<td>%</td>
<td>取模</td>
<td>==</td>
<td>等于</td>
<td></td>
<td></td>
</tr>
<tr>
<td>++</td>
<td>自增</td>
<td>!=</td>
<td>不等于</td>
<td></td>
<td></td>
</tr>
<tr>
<td>--</td>
<td>自减</td>
<td>===</td>
<td>等于</td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td>!==</td>
<td>不等于</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
### 类型
<table>
<thead>
<tr>
<th>类型</th>
<th>写法</th>
</tr>
</thead>
<tbody>
<tr>
<td>byte</td>
<td>`123b`、`123B`</td>
</tr>
<tr>
<td>short</td>
<td>`123s`、`123S`</td>
</tr>
<tr>
<td>int</td>
<td>`123`</td>
</tr>
<tr>
<td>long</td>
<td>`123l`、`123L`</td>
</tr>
<tr>
<td>float</td>
<td>`123f`、`123F`</td>
</tr>
<tr>
<td>double</td>
<td>`123d`、`123D`</td>
</tr>
<tr>
<td>BigDecimal</td>
<td>`123m`、`123M`</td>
</tr>
<tr>
<td>boolean</td>
<td>`true`、`false`</td>
</tr>
<tr>
<td>string</td>
<td>`'hello'`</td>
</tr>
<tr>
<td>string</td>
<td>`"hello"`</td>
</tr>
<tr>
<td>string</td>
<td>`"""多行文本块,主要用于编写SQL"""`</td>
</tr>
<tr>
<td>Pattern</td>
<td><code>/\d+/g`,`/pattern/gimuy</code> 用于定义正则,v0.5.0中新增</td>
</tr>
<tr>
<td>lambda</td>
<td>`()=>expr`、`(param1,param2....)=>{...}`</td>
</tr>
<tr>
<td>list</td>
<td>`[1,2,3,4,5]`</td>
</tr>
<tr>
<td>map</td>
<td>{key : value,key1 : value}</td>
</tr>
<tr>
<td colspan="2">`{[key] : "value"}` `[key]`表示动态从变量中获取key值</td>
</tr>
</tbody>
</table>
### 一元运算符
您可以通过一元运算`-`符将数字取反,例如`-234`。要取反布尔表达式,可以使用`!`运算符,例如`!true`。
自增/自减 `i++` 、 `++i`、`i--`、`--i`
### 算术运算符
支持常见的算术运算符,例如`1 + 2 * 3 / 4 % 2`、同样也支持`+=`、`-=`、`*=`、`/=`、`%=`
### 比较运算符
`23 < 34`,`23 <= 34`,`23 > 34`,`23 >= 34`,`true != false`,`23 == 34`
比较运算符结果为`boolean`类型
### 逻辑运算符
除了一元运算`!`符,您还可以使用`&&`和`||`。就像Java中一样,运算符也是一种短路运算符。如果`&&`左边计算为`false`,则不会计算右边。如果`||`左侧为true,则不会计算右边
在1.3.0+版本中增强了`&&` `||` 不在强制两边必须是布尔类型。作用与`JS`一样
### 三元运算符
三元运算符是`if`语句的简写形式,其工作方式类似于Java中,例如`true ? "yes" : "no"`
在1.2.7+版本中,增强了`if` 和三元运算符,不在强制值必须是布尔类型,可以写`if(xxx)`的形式当`xxx`为以下情况时为`fasle`、其它情况为`true`
- `null`
- 空集合
- 空Map
- 空数组
- 数值==0
- 非空字符串
- `false`
### 类型转换
可使用`::type(defaultValue)` 的方式进行类型转换,如
```javascript
var a = "123"::int; // 123
var b = "abc"::int(111); // 111
var c = "2020-01-01"::date('yyyy-MM-dd'); // 转换为date
```
### 可选链操作符
可选链操作符(`?.`)允许读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用是否有效。`?.`操作符的功能类似于`.`链式操作符,不同之处在于,在引用为空 的情况下不会引起错误,该表达式短路返回值是 `null`。
当尝试访问可能不存在的对象�
没有合适的资源?快使用搜索试试~ 我知道了~
一款基于JVM的脚本语言代码.zip
共357个文件
java:220个
ms:132个
license:1个
5星 · 超过95%的资源 需积分: 12 1 下载量 156 浏览量
2022-10-23
08:00:06
上传
评论 1
收藏 400KB ZIP 举报
温馨提示
一款基于JVM的脚本语言代码.zip一款基于JVM的脚本语言代码.zip一款基于JVM的脚本语言代码.zip一款基于JVM的脚本语言代码.zip一款基于JVM的脚本语言代码.zip一款基于JVM的脚本语言代码.zip一款基于JVM的脚本语言代码.zip
资源详情
资源评论
资源推荐
收起资源包目录
一款基于JVM的脚本语言代码.zip (357个子文件)
.gitignore 297B
ClassReader.java 167KB
MethodWriter.java 99KB
Frame.java 57KB
SymbolTable.java 54KB
ClassWriter.java 44KB
Parser.java 36KB
MethodVisitor.java 34KB
ArithmeticHandle.java 33KB
Type.java 32KB
OperatorHandle.java 31KB
Label.java 30KB
AnnotationWriter.java 27KB
MagicScriptCompiler.java 22KB
JavaReflection.java 22KB
Opcodes.java 20KB
StreamExtension.java 19KB
TypeReference.java 17KB
Attribute.java 16KB
BitHandle.java 16KB
ClassVisitor.java 16KB
FunctionCallHandle.java 15KB
Tokenizer.java 13KB
ByteVector.java 13KB
SignatureReader.java 12KB
FieldWriter.java 11KB
Symbol.java 10KB
Constants.java 10KB
ModuleWriter.java 9KB
LinQBuilder.java 9KB
RecordComponentWriter.java 9KB
Handler.java 8KB
SignatureWriter.java 8KB
TypePath.java 8KB
Handle.java 7KB
MagicScriptEngine.java 7KB
MagicScript.java 7KB
SignatureVisitor.java 7KB
BinaryOperation.java 7KB
MapExtension.java 7KB
ModuleVisitor.java 7KB
AnnotationVisitor.java 6KB
TokenStream.java 6KB
ConstantDynamic.java 6KB
RecordComponentVisitor.java 6KB
FieldVisitor.java 6KB
ScriptClass.java 6KB
ObjectConvertExtension.java 6KB
Context.java 6KB
JavaInvoker.java 5KB
Span.java 5KB
MagicResourceLoader.java 5KB
TryStatement.java 5KB
CharacterStream.java 4KB
ObjectTypeConditionExtension.java 4KB
UnaryOperation.java 4KB
MagicScriptContext.java 4KB
GrammarTests.java 4KB
MethodCallTests.java 4KB
IssuesTests.java 4KB
MagicScriptError.java 4KB
Edge.java 4KB
LinqSelect.java 4KB
TokenType.java 4KB
MethodTooLargeException.java 3KB
ArrayFunctions.java 3KB
AggregationFunctions.java 3KB
ClassConverter.java 3KB
AsyncCall.java 3KB
ClassTooLargeException.java 3KB
Return.java 3KB
StringLiteral.java 3KB
MagicScriptDebugContext.java 3KB
CurrentFrame.java 3KB
ForStatement.java 3KB
Variables.java 2KB
ClassExtension.java 2KB
Import.java 2KB
TryCatchFinallyReturnTest.java 2KB
IfStatement.java 2KB
MagicScriptEngineFactory.java 2KB
MemberAccess.java 2KB
MethodCall.java 2KB
NumberExtension.java 2KB
LinqFunctions.java 2KB
GenericTokenParser.java 2KB
FunctionCall.java 2KB
CollectionImplicitConvert.java 2KB
FunctionalImplicitConvert.java 2KB
VariableDestructuringDefine.java 2KB
LinqTests.java 2KB
MapLiteral.java 1KB
TernaryOperation.java 1KB
VarIndex.java 1KB
MathFunctions.java 1KB
AssigmentOperation.java 1KB
WhileStatement.java 1KB
LinqJoin.java 1KB
BooleanLiteral.java 1KB
BaseTest.java 1KB
共 357 条
- 1
- 2
- 3
- 4
盈梓的博客
- 粉丝: 6837
- 资源: 1245
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1