1个不稳定版本
0.1.0 | 2024年6月25日 |
---|
#2076 in 解析器实现
81KB
2K SLoC
clauser
clauser是一个用于处理Paradox Interactive用于其大型策略游戏的Clausewitz引擎配置、脚本和数据文件的库。
它目前实现了Tokenizer(分词器)、低级Reader(读取器)、基于serde的Deserializer(反序列化器)以及用于serde无法工作的情况的复制Value deserializer。更多信息,请阅读文档。
示例
使用serde
use serde::Deserialize;
#[derive(Deserialize)]
struct TestObject {
a: i32,
b: String,
c: Date
}
let obj = clauser::de::from_str::<TestObject>(
"a = 1 b = test c = 1940.1.1"
);
assert!(obj.a == 1);
assert!(obj.b == "test");
assert!(obj.c == Date::new(1940, 1, 1, 0));
lib.rs
:
clauser
clauser是一个用于处理Paradox Interactive用于其大型策略游戏的Clausewitz引擎配置、脚本和数据文件的库。
它包含多个组件
- Deserializer是一个[serde]反序列化器,可以将Clausewitz文件反序列化为Rust数据结构。
- Value允许将Clausewitz文件反序列化为值树,适用于事先不知道数据模式的情况。
- Tokenizer将Clausewitz文件转换为一系列标记。
- Reader是Tokenizer的包装器,它允许对Clausewitz源文件进行低级解析操作。
依赖项
~1.3–2.2MB
~33K SLoC