diff --git a/docs/fscript.md b/docs/fscript.md index a765260db..5c9103889 100644 --- a/docs/fscript.md +++ b/docs/fscript.md @@ -1,6 +1,6 @@ # fscript 脚本引擎 -## 介绍 +## 1. 介绍 fscript 是一个极简的脚本引擎,借鉴了函数语言中一些思路,主要用于低端嵌入式系统,让用户轻松扩展现有系统,而不需要重新编译和下载固件。 @@ -13,7 +13,7 @@ fscript 是一个极简的脚本引擎,借鉴了函数语言中一些思路, * 限制: * 不支持循环。 -## 示例 +## 2. 示例 ```c print("hello fscript") @@ -25,11 +25,11 @@ print("hello fscript") ./bin/runFScript 'print("hello fscript")' ``` -## 语法 +## 3. 语法 ### 数据类型 -* 数值类型 (double) +* 数值类型 (double)。 * 字符串类型 (string)。UTF-8 字符串。 * 布尔类型 (bool)。标准取值为:true 和 false,非 0 的数值视为 true。 @@ -40,13 +40,14 @@ print(join(",", 1, 2, 3)) print(join(",", +(1, 2), -(5, 2), *(2, 3), /(9, 3))) ``` -## 函数 +## 4.函数 -### 基本函数 +### 4.1 基本函数 -#### print +#### print > 打印调试信息到控制台。 +---------------------------- ##### 原型 @@ -63,6 +64,7 @@ print("hello fscript") #### noop > 空函数。什么也不做,主要给 if 函数用。 +---------------------------- ##### 原型 @@ -73,6 +75,7 @@ noop() #### if > 条件执行。如果第一个参数为 true,执行第二个参数,否则执行第三个参数。 +---------------------------- ##### 原型 @@ -91,6 +94,8 @@ if(<(get(a), 0), print(" a < 0"), print("a >= 0")) > 设置变量的值。 +---------------------------- + ##### 原型 ``` @@ -107,6 +112,8 @@ set(a, 1) > 获取变量的值。 +---------------------------- + ##### 原型 ``` @@ -123,6 +130,8 @@ print(+(get(a, 0), 100)) > 清除变量。 +---------------------------- + ##### 原型 ``` @@ -139,6 +148,8 @@ unset(a) > 转换为整数类型。 +---------------------------- + ##### 原型 ``` @@ -154,6 +165,7 @@ int("123") #### float > 转换为浮点数类型。 +---------------------------- ##### 原型 @@ -170,6 +182,7 @@ float("123") #### str > 转换为字符串类型。 +---------------------------- ##### 原型 @@ -186,6 +199,7 @@ str(int(123)) #### iformat > 对整数进行格式化(生成的字符串长度不超过 63) +---------------------------- ##### 原型 @@ -202,6 +216,7 @@ iformat("hello:%d", 123) #### fformat > 对浮点数进行格式化(生成的字符串长度不超过 63) +---------------------------- ##### 原型 @@ -218,11 +233,12 @@ fformat("hello:%lf", 123) #### exec > 执行 object 里的一个命令。 +---------------------------- ##### 原型 ``` -exec(f, value) +exec(cmd, arg) ``` #### 示例 @@ -233,12 +249,14 @@ exec("clear", "all") > 具体功能与 object 的实现有关。 -### 字符串函数 +### 4.2 字符串函数 #### join > 将多个变量用指定的分隔符拼接起来(最多 7 个字符串),形成一个字符串。 +---------------------------- + ##### 原型 ``` @@ -255,6 +273,8 @@ join(",", 1, 2, 3, "abc") > 取字符串的长度。 +---------------------------- + ##### 原型 ``` @@ -271,6 +291,8 @@ len("abc") > 将字符串转换成大写。 +---------------------------- + ##### 原型 ``` @@ -287,6 +309,8 @@ tuppper("abc") > 将字符串转换成小写。 +---------------------------- + ##### 原型 ``` @@ -302,6 +326,7 @@ tolower("ABC") #### trim > 将字符串转换成小写。 +---------------------------- ##### 原型 @@ -318,6 +343,7 @@ trm(" abc ") #### substr > 取子字符串。 +---------------------------- ##### 原型 @@ -334,6 +360,7 @@ substr("abcd", 1, 2) #### replace > 替换子字符串。 +---------------------------- ##### 原型 @@ -349,7 +376,8 @@ replace("ab cd", "ab", "hello") #### contains -> contains子字符串。 +> 检查是否包含指定的子字符串。 +---------------------------- ##### 原型 @@ -363,11 +391,12 @@ contains(str, substr) contains("ab cd", "ab") ``` -### 运算函数 +### 4.3 运算函数 #### sum > 对多个数值类型的参数求和。 +---------------------------- ##### 原型 @@ -397,6 +426,7 @@ print(sum(1, 2, 3)) #### sub > 计算两个数之差。 +---------------------------- ##### 原型 @@ -428,6 +458,7 @@ print(-(2, 1)) #### mul > 计算两个数之积。 +---------------------------- ##### 原型 @@ -459,6 +490,7 @@ print(*(2, 1)) #### div > 计算两个数之商。 +---------------------------- ##### 原型 @@ -490,6 +522,7 @@ print(/(2, 1)) #### % > 计算两个数的模。 +---------------------------- ##### 原型 @@ -518,6 +551,7 @@ print(%(23, 7)) #### and > 逻辑与运算。 +---------------------------- ##### 原型 @@ -548,6 +582,7 @@ true #### or > 逻辑或运算。 +---------------------------- ##### 原型 @@ -578,6 +613,7 @@ true #### not > 逻辑非运算。 +---------------------------- ##### 原型 @@ -608,6 +644,7 @@ true #### & > 位与运算。 +---------------------------- ##### 原型 @@ -636,6 +673,7 @@ print(&(1, 1)) #### | > 位或运算。 +---------------------------- ##### 原型 @@ -664,6 +702,7 @@ print(|(1, 2)) #### ~ > 按位取反运算。 +---------------------------- ##### 原型 @@ -691,6 +730,7 @@ print(~(1)) ### 比较函数 #### < +---------------------------- > 小于。 @@ -723,6 +763,7 @@ true #### <= > 小于等于。 +---------------------------- ##### 原型 @@ -753,6 +794,7 @@ true #### > > 大于。 +---------------------------- ##### 原型 @@ -783,6 +825,7 @@ true #### >= > 大于等于。 +---------------------------- ##### 原型 @@ -813,6 +856,7 @@ false #### == > 等于。 +---------------------------- ##### 原型 @@ -840,11 +884,12 @@ print(==("a", "b")) false ``` -### 数学函数 +### 4.4 数学函数 #### random > 产生随机数。 +---------------------------- ##### 原型 @@ -861,6 +906,7 @@ print(random()) #### sin > sin 函数。 +---------------------------- ##### 原型 @@ -877,6 +923,7 @@ sin(0) #### cos > cos 函数。 +---------------------------- ##### 原型 @@ -893,6 +940,7 @@ cos(0) #### tan > tan 函数。 +---------------------------- ##### 原型 @@ -909,6 +957,7 @@ tan(1) #### asin > asin 函数。 +---------------------------- ##### 原型 @@ -925,6 +974,7 @@ asin(1) #### acos > acos 函数。 +---------------------------- ##### 原型 @@ -941,6 +991,7 @@ acos(1) #### atan > atan 函数。 +---------------------------- ##### 原型 @@ -957,6 +1008,7 @@ atan(1) #### abs > abs 函数。 +---------------------------- ##### 原型 @@ -973,6 +1025,7 @@ abs(1) #### min > min 函数。 +---------------------------- ##### 原型 @@ -983,6 +1036,7 @@ min(a, b) #### max > max 函数。 +---------------------------- ##### 原型 @@ -1005,6 +1059,7 @@ min(1, 2) #### clamp > clamp 函数。 +---------------------------- ##### 原型 @@ -1018,11 +1073,12 @@ clamp(a, min, max) clamp(2, 1, 3) ``` -### 时间函数 +### 4.5 时间函数 #### time_now > 获取当前时间函数 (s)。 +---------------------------- ##### 原型 @@ -1039,6 +1095,7 @@ time_now() #### time_now_ms > 获取当前时间函数 (ms)。 +---------------------------- ##### 原型 @@ -1055,6 +1112,7 @@ time_now_ms() #### time_now_us > 获取当前时间函数 (us)。 +---------------------------- ##### 原型