MintTiny 语言规范 v1.0
1. 语言概述
MintTiny 是一种基于数组结构的弱类型脚本语言,其特征有:
- 极弱数据类型:变量、常量、未定义符号、字符串、数字共用同一类型系统,布尔值可通过任意非空值隐式转换(如
"True"、["join",["Tr","ue"]] 均视为真值)。
- 动态求值:未定义的符号直接输出字面量(如
print x 输出 x),已定义变量输出其值(如 x=10 时输出 10)。
- 命名规范:建议的变量前缀
. 避免冲突(例:.x, .input),允许重定义关键字(如 def "True" "False")。
- 注意:重定义关键字可能导致逻辑混乱或运行时错误,建议仅在特殊场景下使用。
2. 核心语法结构
2.1 块(Block)与块集(BlockSet)
块-单层/多层数组 [元素1, 元素2, ...]-["print", "Hello"]
块集-嵌套数组 [块1, 块2, ...]-[ ["print","A"], ["print","B"] ]
2.2 通用输入规则(Unified Input)
自动求值:解释器递归展开嵌套结构并替换已定义变量:
[1, ".x", ["add", [1, 1, 1]]] // 若 .x=2 → 输出 [1, 2, 3]
单元素优化:单元素块自动解包为值(空块或非单元素块保持原样):
[5] // 等价于 5
["print"] // 等价于 [print, []] → 打印空行
函数保护:函数调用需显式包裹块集:
[["get", "MouseDown"]] // 正确:返回函数结果
["get", "MouseDown"] // 错误:解析为两个独立元素
3. 关键字规范
所有关键字格式:[关键字, 输入参数, 子块集]
| 关键字 | 输入参数要求 | 子块集 | 功能说明 |
def | 标识符 + 值(块或常量) | 不支持 | 定义变量(例:["def", ".x", 10]) |
while | 条件表达式(自动求值为布尔) | 必需(块集) | 循环执行子块集 |
if | 单输入布尔条件 | 必需(块集) | 条件分支 |
silent | 无意义占位符(需保留) | 必需(块集) | 无渲染执行(不刷新 UI) |
repeat | 循环次数(数字或求值结果) | 必需(块集) | 固定次数循环 |
注
def 仅接受块(非块集)作为值。
if 仅接受单参数输入,自动转换为布尔值。
4. 函数调用
格式:[函数名, 通用输入]
["print", "OK"] // 打印 "OK"
["add", [1, 2, 3]] // 求和 → 6