为 32 位单片机设计的脚本语言 Berry

MIT
C/C++
跨平台
2018-12-07
过招铁是傻

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文件项目文档

的码云指数为
超过 的项目
加载中

评论(21)

風雲劍客
風雲劍客
这个语法好,能不能做成通用语言呢
过招铁是傻 软件作者
目前应该还是比较通用的,没有专门为了单片机去限制一些东西。
LinQian_Sun
LinQian_Sun
越精简越好,支持好C,除掉C++的,不要CLass等一些特性更好。
过招铁是傻 软件作者
class实现占的空间很小,实际上class也不是berry设计的重点
LinQian_Sun
LinQian_Sun
发私信你了
久永
久永

引用来自“过招铁是傻”的评论

这个脚本的设计目标之一是要比Lua小,目前它的启动RAM堆占用大约2.5KB(如果要跑脚本的话建议8KB以上),ROM需要40多KB。这里有一个STM32F103RCT6的移植:https://github.com/gztss/berry_mcu。以后我想把一些hash表做到ROM里头去,这样可以进一步减少RAM使用。性能其实和Lua差不多。

引用来自“久永”的评论

NB,强两年有个东西本来想要103用,可惜没有对应好的软件生态,只好作罢。103现在貌似很便宜吧?

引用来自“过招铁是傻”的评论

103RCT6淘宝上不到9块钱一片,跑我这个脚本绰绰有余,实际上只要是STM32F103CBT6就能跑起来了。

引用来自“久永”的评论

要是能搞个开发环境或者 VS 的语言支持插件,那推广起来就NB了!

引用来自“过招铁是傻”的评论

VS Code的插件是有的,在tools/pulgins/vscode文件夹下面,开发环境的话就比较麻烦了,我现在还没做KEIL的移植,打算等语言的基础功能稳定了再重点搞单片机平台的移植,目前再单片机上跑也只是简单的验证一下。
有个插件就可以了,从头弄开发工具,消耗精力太多了,没有必要。 要是专门做语言,可以实现下语言服务器。
过招铁是傻 软件作者

引用来自“过招铁是傻”的评论

这个脚本的设计目标之一是要比Lua小,目前它的启动RAM堆占用大约2.5KB(如果要跑脚本的话建议8KB以上),ROM需要40多KB。这里有一个STM32F103RCT6的移植:https://github.com/gztss/berry_mcu。以后我想把一些hash表做到ROM里头去,这样可以进一步减少RAM使用。性能其实和Lua差不多。

引用来自“久永”的评论

NB,强两年有个东西本来想要103用,可惜没有对应好的软件生态,只好作罢。103现在貌似很便宜吧?

引用来自“过招铁是傻”的评论

103RCT6淘宝上不到9块钱一片,跑我这个脚本绰绰有余,实际上只要是STM32F103CBT6就能跑起来了。

引用来自“久永”的评论

要是能搞个开发环境或者 VS 的语言支持插件,那推广起来就NB了!
VS Code的插件是有的,在tools/pulgins/vscode文件夹下面,开发环境的话就比较麻烦了,我现在还没做KEIL的移植,打算等语言的基础功能稳定了再重点搞单片机平台的移植,目前再单片机上跑也只是简单的验证一下。
久永
久永

引用来自“过招铁是傻”的评论

这个脚本的设计目标之一是要比Lua小,目前它的启动RAM堆占用大约2.5KB(如果要跑脚本的话建议8KB以上),ROM需要40多KB。这里有一个STM32F103RCT6的移植:https://github.com/gztss/berry_mcu。以后我想把一些hash表做到ROM里头去,这样可以进一步减少RAM使用。性能其实和Lua差不多。

引用来自“久永”的评论

NB,强两年有个东西本来想要103用,可惜没有对应好的软件生态,只好作罢。103现在貌似很便宜吧?

引用来自“过招铁是傻”的评论

103RCT6淘宝上不到9块钱一片,跑我这个脚本绰绰有余,实际上只要是STM32F103CBT6就能跑起来了。
要是能搞个开发环境或者 VS 的语言支持插件,那推广起来就NB了!
过招铁是傻 软件作者

引用来自“过招铁是傻”的评论

这个脚本的设计目标之一是要比Lua小,目前它的启动RAM堆占用大约2.5KB(如果要跑脚本的话建议8KB以上),ROM需要40多KB。这里有一个STM32F103RCT6的移植:https://github.com/gztss/berry_mcu。以后我想把一些hash表做到ROM里头去,这样可以进一步减少RAM使用。性能其实和Lua差不多。

引用来自“久永”的评论

NB,强两年有个东西本来想要103用,可惜没有对应好的软件生态,只好作罢。103现在貌似很便宜吧?
103RCT6淘宝上不到9块钱一片,跑我这个脚本绰绰有余,实际上只要是STM32F103CBT6就能跑起来了。
久永
久永

引用来自“过招铁是傻”的评论

这个脚本的设计目标之一是要比Lua小,目前它的启动RAM堆占用大约2.5KB(如果要跑脚本的话建议8KB以上),ROM需要40多KB。这里有一个STM32F103RCT6的移植:https://github.com/gztss/berry_mcu。以后我想把一些hash表做到ROM里头去,这样可以进一步减少RAM使用。性能其实和Lua差不多。
NB,强两年有个东西本来想要103用,可惜没有对应好的软件生态,只好作罢。103现在貌似很便宜吧?
过招铁是傻 软件作者
这个脚本的设计目标之一是要比Lua小,目前它的启动RAM堆占用大约2.5KB(如果要跑脚本的话建议8KB以上),ROM需要40多KB。这里有一个STM32F103RCT6的移植:https://github.com/gztss/berry_mcu。以后我想把一些hash表做到ROM里头去,这样可以进一步减少RAM使用。性能其实和Lua差不多。
Anjelo
Anjelo
用microPython的路过
SamXIAO
SamXIAO

引用来自“简单生活”的评论

和lua对比 内存占用 代码尺寸,性能都有什么优势?
+1

嵌入式脚本语言 Berry 发布 v0.1.0 版本

Berry 是一款面向小型嵌入式系统的脚本语言,目前发布了 0.1.0 版本。相比于其他脚本语言,Berry 更加精简,因此更适合在单片机上运行。该版本的语言主要特性为: 基本类型 数值类型:整数(...

2019/06/22 15:45

没有更多内容

加载失败,请刷新页面

没有更多内容

暂无问答

为 STM32 移植 Berry 脚本语言

Berry 是我为单片机设计的一款脚本语言,该语言具有资源占用小、平台无关、执行速度快和易于掌握等优点。在单片机上使用脚本语言可以提高单片机的二次开发能力以及调试效率,同时也是一种比较...

2019/07/30 12:08
20
0
codeforcesC - Berry Jam(折半枚举+1-1序列前后缀和)

Educational Codeforces Round 78 (Rated for Div. 2) C - Berry Jam C. Berry Jam time limit per test 2 seconds memory limit per test 256 megabytes input standard input output stand...

2019/12/21 14:07
9
0
Banana pi 系列开发板金属外壳面世

Banana pi 系列开发板金属外壳面世 BPI-M2 Berry 金属外壳 ![输入图片说明](https://static.oschina.net/uploads/img/201710/30181716_kbl4.jpg "BPI-M2 Berry 金属外壳") ![输入图片说明](h...

2017/10/30 18:21
130
0
python使用phantomJS循环for爬取多个页面时,解决内存持续变大而报错“ConnectionResetError: [WinError 10054]远程主机强迫关闭了一个现有的连接”的问题

首先声明,我是一个Python小白,想了个蠢办法,但觉得很实用。哈哈哈!!! Python使用phantomJS循环for爬取页面时,phantomJS占用的内存会越来越大,直接报错“ConnectionResetError: [WinE...

2019/04/10 10:10
24
0
Selenium Webdriver API(4)

Selenium Webdriver API(4) 27、操作复选框 checkBox #encoding=utf-8 import unittest import time from selenium import webdriver class VisitLocalWebByIE(unittest.TestCase): def setU...

2019/02/27 15:39
23
0
空间分析的三个传统:从三份讣告谈起

空间分析的三个传统:从三份讣告谈起 河海大学 张晓祥 xiaoxiang@hhu.edu.cn 2012年11月于美国凤凰城 原文出处:http://blog.sina.com.cn/s/blog_643115fc010139m4.html,已征得作者同意转载...

2018/02/24 02:45
22
0
给大家整理了19个pythonic的编程习惯

Python最大的优点之一就是语法简洁,好的代码就像伪代码一样,干净、整洁、一目了然。 要写出 Pythonic(优雅的、地道的、整洁的)代码,需要多看多学大牛们写的代码,github 上有很多非常优...

2019/03/06 20:24
48
0
XML之dom4j实用例子

XML之dom4j dom4j解析xml文档的大致步骤 第一步. 使用 org.dom4j.io.SAXReader 类的read(String fileName)方法读取并解析xml文档,返回org.dom4j.Document 接口的一个对象; <!-- lang: jav...

2016/01/27 20:00
82
1
国外排名前20的UX/UI设计师推荐

在UX/UI设计领域中,当下最不缺乏的当属日新月异的科技和创意百变的设计灵感。保持对设计行业的持续关注以及敏锐嗅觉,不仅是可以提高我们的专业素质,同时也能保持自身的行业竞争力。说了这...

2016/09/23 16:17
66
0
Dynamics CRM教程:图表的Top设置及导出修改和导入

关注本人微信和易信公众号: 微软动态CRM专家罗勇,回复144或者20150412可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 上一篇博客制作的图表放在Dashboard(仪...

2019/03/12 11:48
16
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部