4 个版本 (重大更新)
0.4.0 | 2023年5月27日 |
---|---|
0.3.0 | 2023年5月22日 |
0.2.0 | 2023年5月17日 |
0.1.0 | 2023年5月15日 |
#2240 in 解析器实现
39 次每月下载
83KB
2K SLoC
Any-sexpr
这是一个具有以下目标的 S-表达式解析器和格式化工具
-
提供对标记化程序的直接访问,例如
anysexpr::parse
,同时也提供了anysexpr::read
以方便构建内存中的树。 -
良好的错误报告(精确的位置信息和消息)。
-
(未来)使
anysexpr::read
的数据构造函数可参数化(泛型),例如在sexpr_parser
包中。 -
流式处理:允许从文件句柄中懒加载读取,并通过自定义循环打印输出,例如用于通信。目前这通过直接使用
anysexpr::parse
进行输入,或创建用于打印的令牌来实现。未来:更多可能性,例如将树转换为令牌流,或在打印时使用按需生成的树进行参数化。 -
(未来)通过运行时(和编译时?)设置支持各种 s-表达式变体(R*RS、Guile、Clojure、Common Lisp、..)。
-
(可能)适用于微控制器(代码小,无标准?)。
作者对 Rust 还比较陌生。某些 API 指南条目可能尚未遵循,该领域的帮助如同其他领域一样受欢迎。
使用方法
请参阅 examples/main.rs。
待办事项
- 打印时的字符串转义功能
- 不精确和复数
- 性能调整?可能不要使用 genawaiter?
- 更好的错误行为:解析器应返回错误,但尝试使其能够继续?
- 更多测试(大型测试语料库,模糊测试往返)
- 处理 Guile、Clojure 和其他语法版本
- 树生成/映射的参数化(泛型)(与 Serde?相比)
- 如上所述的懒加载功能
- 一定程度的支持格式化输出
正交
- 更详细地研究
lexpr
包(在开始此项目之前研究现有包时被遗漏)
联系方式
Christian Jaeger [email protected]
依赖项
~1–1.8MB
~38K SLoC