11 个版本
0.3.2 | 2021年5月24日 |
---|---|
0.3.1 | 2021年1月12日 |
0.2.1 | 2020年11月23日 |
0.1.5 | 2020年11月21日 |
#447 在 编程语言 中
80KB
2.5K SLoC
xBASIC
xBASIC 被设计成一个非常简单的语言。这个库的目标是使向 Rust 项目添加用户定义的逻辑变得容易。
特性
- 优雅地处理不良或恶意代码。
- 允许设置计算时间限制。
- 允许从 Rust 调用 xBASIC 函数
- 允许从 xBASIC 调用 Rust 函数
- 允许定义自定义 IO,其中
PRINT
和INPUT
可以工作 - 完全安全的 Rust
待办事项
- 数组
- 更好的标准库(字符串长度、类型转换等)
该项目还包括一个基本的解释器。可以通过 cargo run
启动。它具有 REPL,但也可以运行文件。
语法
如前所述,xBASIC 是一个非常简单的语言。像其他 BASIC 语言一样,它被设计为初学者容易理解。
打印
print "hello world" // "hello world"
print "hello" "world" // "hello world"
print 5 "+" 3 "=" 5 + 3 // "5 + 3 = 8"
PRINT
会自动将多个表达式连接在一起。
读取
input a // Read in a line, store it in a
input b // Read in another line, store it in b
变量
a = 3
print a // "3"
print b // "0"
所有变量都隐式初始化为 0。
比较
a = 3
print a = 3 // "true"
print not a = 3 // \"false\"
print a < 3 // "false"
print a > 3 // "false"
print a <= 3 // "true"
print a >= 3 // "true"
请注意,当用作语句时,a = 3
是一个赋值,当用作表达式时是一个比较。
IF 语句
if 3 = 3 then
print "hello world" // runs
end if
if not a then
print "hello world" // runs, because a is implicitly 0
end if
if b = 2 then
elseif b = 3 then
elseif b = 4 then
else
end if
真值是 true
和除了 0 以外的所有数字。尝试评估字符串的真值是一个错误。
WHILE 语句
a = 0
while a < 10
print a // prints 0 1 2 3 4 5 6 7 8 9, each on a newline
a += 1
wend
FOR 语句
for x = 10 to 20
print x // prints 10 11 12 13 14 15 16 17 18 19 20, each on a newline
next x
函数
print a("hello", "world") // "helloworld"
function a(b, c)
return b + c
end function
函数可以在调用之前或之后定义。可以通过 return
指定返回值,否则将隐式返回 0。递归也是允许的。
更多示例,请查看 examples
目录。
依赖项
~3MB
~62K SLoC