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开发工具

Download history 11/week @ 2024-04-14 16/week @ 2024-04-21 11/week @ 2024-04-28 22/week @ 2024-05-05 12/week @ 2024-05-12 17/week @ 2024-05-19 7/week @ 2024-05-26 13/week @ 2024-06-02 11/week @ 2024-06-09 13/week @ 2024-06-16 16/week @ 2024-06-23 3/week @ 2024-06-30 11/week @ 2024-07-07 162/week @ 2024-07-14 52/week @ 2024-07-21 23/week @ 2024-07-28

每月下载 248次
6 个 包中使用

Apache-2.0 许可证

1.5MB
29K SLoC

EndBASIC 编程语言 - 标准库

Crates.io Docs.rs

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_CIRCLEGFX_CIRCLEFGFX_HEIGHTGFX_LINEGFX_PIXELGFX_RECTGFX_RECTFGFX_SYNCGFX_WIDTH
  • 硬件交互:GPIO_CLEARGPIO_READGPIO_SETUPGPIO_WRITE
  • 文件系统交互:CDDIRMOUNTPWDUNMOUNT
  • 解释器交互:CLEARERRMSGHELP
  • 数值:ATNCINTCOSDEGINTMAXMINPIRADRANDOMIZERNDSINSQRTAN
  • 程序操作:DISASMEDITKILLLISTLOADNEWRUNSAVE
  • 字符串和字符:ASCCHRLEFTLENLTRIMMIDRIGHTRTRIMSTR

设计原则

关于EndBASIC实现的一些亮点是

  • 最小化库。标准库提供了所有内置命令的逻辑,但每个命令都可以单独安装到解析器中,所有与环境(例如控制台或文件系统)的交互都通过调用者需要实现的钩子公开。

  • 异步支持。该库与异步兼容,使其能够轻松地通过WASM嵌入到JavaScript中。

示例

examples目录包含示例代码,以展示如何将EndBASIC解释器和标准库嵌入到您自己的程序中。

依赖项

~2.9–4MB
~70K SLoC