#命令行 #参数解析器 #命令行参数 #大小写敏感 # #解析器 #命令

parmacl

一个命令行文本解析器。解析未被shell预先解析为参数的完整命令行字符串。

1 个不稳定版本

0.1.0 2022年10月5日

#494命令行界面

ISC 许可证

145KB
2K SLoC

Rust的命令行解析器

该库的主要目的是解析完整的命令行。也就是说,包含完整命令行的字符串。它也可以解析Rust环境命令行参数(由Rust提供 std::env::Args),但是还有其他专注于这一功能的库,可能更适合。

虽然Rust标准库没有提供对完整环境命令行的访问权限,但这个库可以用于解析在应用程序中输入的内部命令。

特性

  • 命令行解析
  • 环境参数解析
  • 命令行风格
    • 指定可以用于引用参数和选项值的字符(或字符集合)
    • 指定可以用于宣布选项的字符(或字符集合)
    • 指定可以用于宣布选项值(包括空格字符)的字符(或字符集合)
    • 指定将终止命令行解析的字符(或字符集合)
    • 匹配参数、选项代码和选项值时的大小写敏感性
    • 具有多于一个字符的代码的选项是否需要2个宣布字符(例如 --anOpt)
    • 使用双引号在引用参数和选项值中嵌入引用字符
    • 使用转义序列包含具有特殊意义的字符
    • 命令行中的第一个参数是否是二进制的名称/路径
  • 参数匹配
    • 参数或选项
    • 参数索引
    • 参数索引
    • 参数文本(字符串或正则表达式)
    • 选项索引
    • 选项代码(字符串或正则表达式)
    • 选项是否有值(None、IfPossible、Always)
    • 选项值文本(字符串或正则表达式)
    • 选项值是否可以以选项宣布字符开头
  • 使用枚举(或任何其他类型)对匹配器中的参数和选项进行标记,以便于识别
  • 解析错误结果具有描述错误类型和发生位置的属性。

用法

该库中的主要项包括

  • Parser - 解析命令行的对象。它具有根据命令行风格设置的属性,以及用于识别命令行参数的匹配器列表。
  • Matcher - 每个参数都必须与匹配器进行匹配。通常为每个参数创建一个匹配器,但是匹配器也可以用于匹配多个参数。
  • Arg - 一个包含3种变体的枚举:Binary、Param、Option。Parser的解析函数返回这些变体的数组 - 每个变体都标识了解析器在命令行中找到的参数。

按照以下步骤解析命令行

  1. 创建一个枚举,为命令行中期望的每种选项参数类型添加一个变体。
  2. 创建一个枚举,为命令行中期望的每种参数类型添加一个变体。
  3. 创建一个Parser实例。
  4. 如果需要,设置Parser实例的相关属性以反映命令行的风格。
  5. 将所有可能的参数的Matcher添加到解析器中。为每个匹配器添加适当的枚举标签。
  6. 调用Parser::parse_line(command_line),它将解析命令行并返回一个结果,包含一个Arg向量或错误。
  7. 遍历返回的向量并处理每个Arg

依赖项

~2.2–3MB
~53K SLoC