EndBASIC 是具备 REPL 的 BASIC 解释器,并包含一个使用 Rust 编写的 Web 界面。
EndBASIC 的灵感来自 Amstrad 的 Locomotive BASIC 1.1 和 Microsoft 的 QuickBASIC 4.5。与前者一样,EndBASIC 旨在提供一个交互式环境,将编码与即时视觉反馈无缝融合。与后者一样,EndBASIC 提供更高级别的编程结构和强类型。
INPUT "Did you ever experience BASIC (true/false)"; answer? IF answer? THEN PRINT "Great; you are in for a treat!" ELSE PRINT "Oh noes; try today?" END IF
EndBASIC 的主要目标是提供一个简化且有限制的环境来学习编程基础,并专注于可以快速奖励学习者的功能。这些功能包括内置文本编辑器、操作屏幕的命令、与共享文件交互的命令,甚至是与 Raspberry Pi 硬件交互的命令。
EndBASIC 最近发布了 0.10,开发者称这是重大更新版本,带来了全面的改进——大部分集中在核心语法上,当然也包括标准库和用户界面。
-
支持
GOTO
和GOSUB
。实现这些需要删除以前基于 AST 的求值器并将其替换为基于字节码的执行器(以及相关的编译器)。您可以在“从 AST 到 EndBASIC 中的字节码执行”中阅读有关此更改的更多信息。 -
通过 捕获和处理错误
ON ERROR
。前面提到的新字节码执行器也使这成为可能。 -
每条错误消息中都有精确的行号和列号。这需要对 AST 的表示方式进行大规模改革,以便在每个节点中携带这些细节。修改 AST 相对容易……但调整所有现有测试以验证此新信息非常费力。
-
数字类型的互操作。在理论上对数字类型严格是很好的——就像它是 Rust 中一个非常受欢迎的迂腐特性——但是缺乏整数和双精度之间的自动转换是……非常烦人。因此,此版本将整数透明提升为双精度,并将双精度自动舍入为整数。现在可以使用了,但是由于发生了所有特殊情况,我觉得这是一种黑客攻击。更高级的字节码将来可能会使它变得更好。
-
改进了交互式帮助系统。以前的版本提供了一个
HELP
命令来公开所有高级类型的文档,但未能提供有关语言本身的文档(除了变得过于神秘和冗长的简化备忘单之外)。此版本通过扩展HELP
以提供特定于语言的文档来解决此问题。 -
新的控制流结构。这些包括支持 for
DO
循环(及其所有变体,包括无限循环以及循环前后的WHILE
and子句),和单行s。可能是目前存在的最难的结构,因为它的语法很奇怪并且需要考虑许多情况。UNTIL``SELECT CASE``IF``SELECT CASE
-
添加按位运算符。这些都是可有可无的,因为它们现在可用,该语言现在支持以二进制、八进制、十进制和十六进制为基数指定整数文字。
-
重命名
EXIT
为END
终止程序。END
这似乎是一件微不足道的事情,但值得一提的是,由于有时 how 是一个单独的语句,而有时它与其他关键字(例如END IF
or )组合在一起,因此很难将其改装到解析器中END SELECT
。请继续关注即将发布的帖子,该帖子将深入探讨这种语言的解析怪癖。 -
到处都有很多小调整。其中包括对编辑器的修复、对语法的微小更改、命令重命名、添加指数和平方根、添加各种新的字符串函数以及添加查询屏幕大小的方法游戏程序适应不同的视口。
详情查看 Release Notes。
还没有评论,来说两句吧...