词法与语法
ambot-script 是一种 Python 方言,或者说可以认为它是 Python 的子集。
与 Python 类似,ambot-script 是一种运行时确定类型的动态强类型语言。
与 Python 不同,ambot-script 设计并非为持久性运行的应用,其不支持 Python 的异常、类、上下文、反射等高级功能
数据类型
| 数据类型 | 说明 |
|---|---|
| NoneType | 只有固定值 None 是这一类型 |
| bool | 只有固定值 True, False 是这一类型 |
| int | 所有的整数类型,与 Python 类似,不区分 signed/unsigned,在脚本引擎内是无上限下限的,但在进行和引擎提供的指令进行交互时上下限被限定为 int64 范围内 |
| float | 浮点数,双精度 |
| str | 字符串 |
| bytes | 二进制序列 |
| list | 列表 |
| typle | 元组 |
| dict | 字典 |
| set | 集合 |
| function | 函数 |
同时,ambot-script 提供一个了 type 指令 type(value: any) → str 用以根据 value 获得其类型名称
变量
ambot-script 中的变量赋值等行为与 Python 保持一致
函数
ambot-script 中的函数调用语句语法与 Python 一致,但某些预定义的函数对于参数的传递有所限制
一个典型的函数定义可能为 a(arg1: string, arg2: int?, arg3:int?=6) → bool
- 函数(指令)名称为 a
- 函数接收 3 个参数:第 1 个 string 类型的参数和第 2, 3 个 int 类型的参数
- 参数 arg2 是可选的
- 参数 arg3 是可选的,如果省略会默认传递 6
- 有一个返回值,返回值为 bool
实际的函数还有可变个数参数、动态类型参数等,将在具体用到时在文档中进行说明。
另外,如果声明中没有指定返回值则为返回 None
ambot-script engine 所提供的一些预定义函数为了未来的扩展性等可能禁止了位置参数和命名参数的混用,如果禁止了则会使用文档 https://docs.python.org/3/tutorial/controlflow.html#special-parameters 中的表示进行函数声明的撰写或是明确标注某一参数为「命名参数」或「位置参数」。
如果文档中明确标注一个参数为「位置参数」则在调用函数时不可利用名称指示来更换参数位置,而如果明确标注一个参数为「命名参数」则在使用时不可省略名称调用。