Berry是一款一款为32位单片机设计的脚本语言。Berry解释器使用C89标准实现,该语言可以在RAM或ROM很小的设备上运行。
尽管Berry的体积很小,但是它也支持class
以及闭包等功能,使得单片机可以具有较好的二次开发能力。Berry没有将数值和字符串等简单类型设计为对象,这样不仅节省了RAM还可以防止频繁的malloc()
调用。此外该脚本语言还有一些减少内存使用的优化。
Berry非常容易和C语言进行交互,您可以使用C API调用Berry代码,也可以在Berry代码中调用C语言实现的原生函数或者类。
以下是Berry支持的基本类型:
-
nil:空类型
-
数值型:integer、real
-
boolean:布尔型
-
string:字符串类型
-
class:类,用于提供面向对象支持
-
list:可变长度数组
-
map:哈希表
-
range:存储一个整数区间
-
function:所有的函数都是function类型
其中list、map和range是class类型。nil、integer、real和boolean型的数据不需要使用动态内存分配。
运算符和控制语句与C语言相似,具体语法信息可以参考README文件和项目文档。
特性
-
基本类型
-
数值:整数(
int
)和实数(real
) -
布尔值:
true
和false
- 字符串:单引号和双引号
-
列表:连续的内存列表,例如
[1, 2, 3]
-
地图:哈希地图,例如
{ 'a': 1, 2: 3, 'map': {} }
-
范围:包括一个较低和较高的整数值,例如
0..5
-
数值:整数(
-
运算符和表达式
-
赋值运算符:
=
,+=
,-=
,*=
,/=
,%=
,&=
,|=
,^=
,<<=
,>>=
-
关系运算符:
<
,<=
,==
,!=
,>
,>=
-
逻辑运算:
&&
,||
,!
-
算术运算符:
+
,-
,*
,/
,%
-
位运算符:
&
,|
,~
,^
,<<
,>>
-
现场操作员:
.
-
下标运算符:
[]
-
连接字符串运算符:
+
-
条件运算符:
? :
-
括号:
()
-
赋值运算符:
-
控制结构
-
条件语句:
if-else
-
迭代语句:
while
和for
-
跳转语句:
break
和continue
-
条件语句:
-
功能
- 局部变量和块范围
- 退货声明
- 嵌套函数定义
- 基于升值的封闭
- 匿名功能
- Lambda表达式
-
类
- 继承(仅公共单继承)
- 方法和运算符重载
- 构造方法
- 破坏性方法
-
模块管理
- 内置模块几乎不需要RAM
- 扩展模块支持:脚本模块,字节码文件模块和共享库(例如* .so,*。dll)模块
-
GC(垃圾收集)
- 标记扫描GC
-
异常处理
-
使用
raise
语句抛出任何异常值 - 多重捕获模式
-
使用
-
字节码文件支持
- 将功能导出到字节码文件
- 加载字节码文件并执行