#脚本语言 #tcl #脚本 #脚本 #语言 #执行命令

molt-ng

适用于Rust应用程序的嵌入式TCL解释器 ()

1 个不稳定版本

0.3.2 2022年8月12日

#645编程语言


用于 molt-argparse

BSD-3-Clause

415KB
7.5K SLoC

molt — Rust的嵌入式Tcl解释器

Molt 0.3.1的新功能

有关每个版本的完整新功能列表,请参阅Molt Book中的标注的变更日志

描述

Molt是一个适用于Rust的嵌入式TCL解释器。应用程序可以在Rust中定义新的TCL命令并执行TCL脚本和字符串。例如,

use molt::Interp;
let mut interp = Interp::new();

let four = interp.eval("expr {2 + 2}")?;
assert_eq!(four.as_int(), 4);

定义一个新命令的方式如下

use molt::check_args;
use molt::MoltResult;
use molt::Value;
use molt::Interp;
use molt::molt_ok;

/// # square *x*
///
/// Computes the square of a value
pub fn cmd_square(_interp: &mut Interp, _: ContextID, argv: &[Value]) -> MoltResult {
    // Correct number of arguments?
    check_args(1, argv, 2, 2, "x")?;

    // Get x, if it's an integer
    let x = argv[1].as_int()?;

    // Return the result.
    molt_ok!(x * x)
}

安装方式如下

use molt::Interp;
let mut interp = Interp::new();
interp.add_command("square", cmd_square);

let num = interp.eval("square 5")?;
assert_eq!(num.as_int(), 25);

值由Value类型表示,它可以转换为与值字符串表示形式一致的任何类型:整数、浮点数、列表以及定义了MoltAny特质的任何类型。

Molt仍在开发中。基本的TCL语言已就位,但许多TCL命令尚未实现。有关详细信息,请参阅Molt Book。

molt-sample仓库中包含一个示例Molt扩展,包括一个shell应用程序和一个库创建,这两个都定义了新的Molt命令。

有关新闻,请参阅我的博客,有关详细信息,请参阅Molt Book,有关问题跟踪等,请参阅GitHub仓库

依赖关系

~1MB
~16K SLoC