2 个不稳定版本
0.2.0 | 2023 年 10 月 1 日 |
---|---|
0.1.0 | 2023 年 9 月 30 日 |
#5 in #paradox
16KB
228 行
PDX 语法
这是一个定义 Paradox 游戏文件语法的 crate。它可以用来将纯文本文件解析为它定义的 AST。此 crate 的主要目的是提供一种方便的文件解析方式,可用于进一步的工具,特别是用于模组制作工具。
使用方法
/// Parse a given paradox script file.
use pdx_syntax::script::parse_file;
fn main() {
let mut args = std::env::args();
args.next();
let path = args.next().expect("Missing argument: path");
let ast = parse_file(&path).unwrap();
// Do something with the AST.
ast.push(Unit::SingleValue(Value::Primitive(Entry::Ident(
"TEST".to_string(),
))));
// Dump to file in origin syntax.
println!("{}", ast);
}
支持的语法
- 脚本:Paradox 脚本。您可以在类似
${game_root_dir}/game/common
的路径中找到文件。大多数文件都是这种格式。有关详细信息,请参阅crate::script
。 - 本地化:Paradox 本地化文件。您可以在
${game_root_dir}/game/localization
中找到文件。有关详细信息,请参阅crate::localization
。
序列化
此 crate 中定义的 AST 可以通过 serde
进行序列化。您可以使用此功能将 AST 转换为其他格式,如 JSON,并在其他语言(如 Python)中使用解析结果。
依赖关系
~3–6MB
~102K SLoC