#脚本语言 #用户定义 #函数 #调用 #逻辑 #计算 #限制

bin+lib xbasic

这是一个库,允许您轻松地将脚本语言添加到项目中。这可以让您的用户编写自己的任意逻辑。

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编程语言

MIT 许可证

80KB
2.5K SLoC

xBASIC

xBASIC 被设计成一个非常简单的语言。这个库的目标是使向 Rust 项目添加用户定义的逻辑变得容易。

特性

  • 优雅地处理不良或恶意代码。
  • 允许设置计算时间限制。
  • 允许从 Rust 调用 xBASIC 函数
  • 允许从 xBASIC 调用 Rust 函数
  • 允许定义自定义 IO,其中 PRINTINPUT 可以工作
  • 完全安全的 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