9 个版本 (重大变更)
0.11.0 | 2024年7月20日 |
---|---|
0.10.0 | 2022年12月27日 |
0.9.0 | 2022年6月6日 |
0.8.1 | 2022年1月29日 |
0.5.1 | 2021年1月25日 |
#455 在 开发工具
每月下载 248次
在 6 个 包中使用
1.5MB
29K SLoC
EndBASIC 编程语言 - 标准库
EndBASIC 是一种类似BASIC语言的解释器,灵感来源于Amstrad的Locomotive BASIC 1.1和Microsoft的QuickBASIC 4.5。与前者一样,EndBASIC旨在提供一个交互式环境,无缝地将编码与即时视觉反馈相结合。与后者一样,EndBASIC提供高级编程结构和强类型。
EndBASIC 提供一个简化和受限的环境来学习编程的基础,并专注于可以快速奖励程序员的特性。这些特性包括内置的文本编辑器、渲染图形的命令以及与Raspberry Pi硬件交互的命令。实现此类功能比其他功能(如性能或更丰富的语言)具有优先级。
EndBASIC 使用Rust编写,可以在各种操作系统和平台上运行,包括macOS、Windows和Linux。
EndBASIC 在Apache 2.0许可证下是免费软件。
这个包里有什么?
endbasic-std
提供了语言标准库,它由各种命令和函数组成。这些都可以单独暴露给解释器。
标准库功能
EndBASIC的标准库受到了其他BASIC解释器的启发,但并不打算与它们完全兼容。该库目前包含
- 数组:
LBOUND
,UBOUND
。 - 控制台操作:
CLS
,COLOR
,INKEY
,INPUT
,LOCATE
,PRINT
,SCRCOLS
,SCRROWS
。 - 数据操作:
READ
,RESTORE
。 - 日期和时间操作:
SLEEP
。 - 图形:
GFX_CIRCLE
、GFX_CIRCLEF
、GFX_HEIGHT
、GFX_LINE
、GFX_PIXEL
、GFX_RECT
、GFX_RECTF
、GFX_SYNC
、GFX_WIDTH
。 - 硬件交互:
GPIO_CLEAR
、GPIO_READ
、GPIO_SETUP
、GPIO_WRITE
。 - 文件系统交互:
CD
、DIR
、MOUNT
、PWD
、UNMOUNT
。 - 解释器交互:
CLEAR
、ERRMSG
、HELP
。 - 数值:
ATN
、CINT
、COS
、DEG
、INT
、MAX
、MIN
、PI
、RAD
、RANDOMIZE
、RND
、SIN
、SQR
、TAN
。 - 程序操作:
DISASM
、EDIT
、KILL
、LIST
、LOAD
、NEW
、RUN
、SAVE
。 - 字符串和字符:
ASC
、CHR
、LEFT
、LEN
、LTRIM
、MID
、RIGHT
、RTRIM
、STR
。
设计原则
关于EndBASIC实现的一些亮点是
-
最小化库。标准库提供了所有内置命令的逻辑,但每个命令都可以单独安装到解析器中,所有与环境(例如控制台或文件系统)的交互都通过调用者需要实现的钩子公开。
-
异步支持。该库与异步兼容,使其能够轻松地通过WASM嵌入到JavaScript中。
示例
examples
目录包含示例代码,以展示如何将EndBASIC解释器和标准库嵌入到您自己的程序中。
examples/script-runner.rs
:展示了如何实例化完整的EndBASIC解释器并使用它来实现脚本运行器。
依赖项
~2.9–4MB
~70K SLoC