11 个稳定版本
使用旧的 Rust 2015
2.2.3 | 2017年7月6日 |
---|---|
2.2.1 | 2017年7月5日 |
2.1.3 | 2017年6月26日 |
1.1.4 | 2017年6月23日 |
#2436 在 解析器实现 中
36 每月下载量
63KB
1K SLoC
Atoms
该存储库目前正在大力建设中,将在 v2.0.0 版本之前进行重大更改;请勿使用此 crate,直到 v2.0.0 版本。
一个小型、简单、自包含的 s-表达式解析器和美化打印器,由 sexp 分支而来。
文档
请参阅 API 文档。
lib.rs
:
一个轻量级、自包含的 s-表达式解析器和数据格式。使用 parse
从字符串表示形式获取 s-表达式,并使用 Display
特性进行序列化,可以通过执行 sexp.to_string()
来实现。
Atoms 是一个基本的 S表达式解析器。它解析字符串并生成由 Cons 单元和离散类型的原子值组成的树。目前,只有以下原始类型可用,并用 Value
枚举
表示
空值
Cons
符号
字符串
整数
浮点数
这些树由预期的 Cons
单元形成。
解析
解析表达式需要将解析器附加到给定的字符串。
use atoms::{Parser, StringValue};
let text = "(this is a series of symbols)";
let parser = Parser::new(&text);
let parsed = parser.parse_basic().unwrap();
assert_eq!(
StringValue::into_list(
vec!["this", "is", "a", "series", "of", "symbols"],
|s| StringValue::symbol(s).unwrap()
),
parsed
);
可以较容易地定义符号的自定义解析,允许使用具有解析错误的受限符号集。有关更多信息,请参阅 Parser::parse
。
渲染
要渲染 S表达式,只需使用 ToString
或直接显示即可。
use atoms::StringValue;
let value = StringValue::cons(
StringValue::symbol("this").unwrap(),
StringValue::cons(
StringValue::string("is"),
StringValue::cons(
StringValue::int(4),
StringValue::symbol("s-expression").unwrap(),
)
)
);
assert_eq!(value.to_string(), "(this \"is\" 4 . s-expression)");