1 个不稳定版本
0.1.0 | 2023 年 7 月 23 日 |
---|
#2106 在 命令行工具
19KB
488 行
sexpfmt
S-表达式易于机器编写,但生成格式化的 S-表达式可能会很痛苦。 sexpfmt
以一致的方式格式化输入流,使得输出既可进行行差异比较,又可读性良好。
sexpfmt 使用的格式化风格非常规范,与许多 Lisp 和 Scheme 程序员喜欢的风格不同。每个缩进增加固定数量的空格(默认为 2 个)。
(object
(object
(name "croissant")
(quantity 2))
(object
(name "latte")
(quantity 1)
(size "tall")))
与 LISP 相比,sexpfmt 使用的 S-表达式数据格式非常简化。不支持引用、伪引用、非引用或点对构建器。也不支持用于构建图形的 #1234 = ...
表达式。字符字面量 #\
(空格)也不支持。请使用 #\space
代替。也不支持 #1234 = ...
表达式来构建图形。
设置和安装
-
要构建和安装此工具,您需要
Cargo
和 Rust 工具链。 -
使用 shell 导航到此存储库的根目录,然后运行
cargo install --path .
-
要运行测试,还需要
bash
和Python3
示例用法
$ cat my-file.sexp | sexpfmt > my-formatted-file.sexp
$ ./build/my-sexp-generator-program arg1 arg2 | sexpfmt >> formatted-logfile.sexp
有关 sexpfmt
行为的示例,请参阅 test
目录。
待办事项
- 允许命令行选项指定...
- 是否打印帮助信息并退出(例如
-h
或--help
) - 是否规范化括号标记
- 边距宽度和缩进宽度。
- 文件输入,直接使用操作系统 API 将文件映射,以处理非常大的文件。
- 是否打印帮助信息并退出(例如
- 解析时保留注释。
- 如果输入了格式错误的文件,则提供更好的错误报告。
- 例如,我们几乎拥有提供行号所需的一切。
- 考虑是否支持更多功能,如引用、伪引用、非引用、对构建等。
依赖关系
~1MB
~22K SLoC