#tcl #scripting #script #language #arguments-parser

molt-argparse

基于 Rust 的 Tcl 解释器 Molt 的参数解析器生成宏

2 个版本

0.1.1 2022 年 8 月 12 日
0.1.0 2022 年 8 月 9 日

#1132 in 编程语言

BSD-3-Clause

7KB
54

生成 molt 参数解析器。

用法

use molt_argparse::molt_argparse;

#[molt_argparse("{netlist} port_pin_list -period -name -comment:_ignored_comment -add")]
fn sdc_create_clock(
    netlist: &mut NetlistDatabase,
    port_pin_list: Vec<i32>, period: f32, name: String, _ignored_comment: Option<String>, add: bool
) -> i32 {
    port_pin_list.len() as i32
}

提示

  • 括号内的参数表示要解析的上下文:{netlist}. 只能有一个此类声明,并且它必须是声明中的第一个(但不必在函数参数列表中)。
  • 标识符表示相应的函数参数:port_pin_list,按它们出现的顺序。
  • 以破折号开始的表示键值参数 -period,可以重命名它:-comment:_ignored_comment. 如果值类型是布尔型,则它成为有无标志,后面不跟值。
  • 所有类型都必须与 molt 的 Value 解析/反解析机制兼容。浮点型、整型和布尔型通过相应的 molt::as_* 处理,所有其他类型通过 molt::as_other 处理。 Vec<xx> 类型会像 MoltList 一样自动解析。
  • 如果函数参数中任何项声明为 Option<SomeType>,则它将成为可选的。如果不这样,则默认为必需。
  • 返回值定义可以是任何普通类型或向量类型,也可以是 Option<> 类型,其中 None 表示错误。目前尚无法指定错误状态 -- 建议使用某种 last_error 机制。

依赖项

~3MB
~59K SLoC